{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Transpiler Passes and Pass Manager"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A central component of Qiskit Terra is the transpiler, which is designed for modularity and extensibility. The goal is to be able to easily write new circuit transformations (known as transpiler **passes**), and combine them with other existing passes.  Which passes are chained together and in which order has a major effect on the final outcome. This pipeline is determined by a **pass manager**, which schedules the passes and also allows passes to communicate with each other by providing a shared space. In this way, the transpiler opens up the door for research into aggressive optimization of quantum circuits.\n",
    "\n",
    "In this notebook, we look at the built-in passes, how to use the pass manager, and develop a simple custom transpiler pass. In order to do the latter, we first need to introduce the internal representation of quantum circuits in Qiskit, in the form of a Directed Acyclic Graph, or **DAG**. Then, we illustrate a simple swap mapper pass, which transforms an input circuit to be compatible with a limited-connectivity quantum device.\n",
    "\n",
    "***Before you start***: You may need to install the `pydot` library and the `graphviz` library for the DAG plotting routines. If you are using Anaconda Python, you can install both with the `conda` command. If you use your system's native Python interpreter, install `pydot` using the `pip` command, and install `graphviz` using your system's native package manager (e.g. `yum`, `apt`, `dnf`, `brew`, etc.)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:56.857930Z",
     "start_time": "2019-12-10T21:47:54.444353Z"
    }
   },
   "outputs": [],
   "source": [
    "from qiskit import QuantumCircuit\n",
    "from qiskit.compiler import transpile\n",
    "from qiskit.transpiler import PassManager"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-21T09:12:12.822442Z",
     "start_time": "2019-08-21T09:12:12.819902Z"
    }
   },
   "source": [
    "## PassManager object\n",
    "\n",
    "Lets you specify the set of passes you want."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:57.268332Z",
     "start_time": "2019-12-10T21:47:56.860709Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAH0AAACoCAYAAADNc+G5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJS0lEQVR4nO2dXUxU6RnHfzMKKlKLyAYV0RV0/JgIKttqaOpHaommXJitoqSl1ZJIxBtjeqlGgvGCeuGlpk1j2gvcSEmatUCiUfGD1i0quNo1I8uXuGqF4AcIgzKnF1NQZIQZODPnsM/zS+Zi3nPmPQ/8eN7zMpD/OAzDMFBE4bS6ACXyqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBqHSBTLa6gO8jhg86muH5I8CAGXMgIRWcNmkxm5QRGJ/Px/Hjx1m8eDFTp04lPT2d6upqlixZwp49e6wuLyAvn8D1P0FdOTTfgOav4M7f4dop6HxodXV+bC09Pz+f4uJiCgoKqKysJCcnh9zcXBobG8nIyLC6vGF0d8DNL6D31fBjfa/hdpn/h8JqbLu8l5aWcvr0aS5fvsz69esB2LhxI7du3aK8vJzVq1dbXOFwmm5A/1sgUDKfAT4fNNbAys8jXdlQbNvpx44dY/PmzYPCB1i0aBFRUVGkpaUB0NzczPr163G5XKxYsYKrV69aUS5v++DpfQILH8CA9kbwdkWqqsDYUnpbWxt3795l+/btw461trbidruZMmUKAAUFBezYsQOPx8OpU6fYuXMnfX19o17D4XCY+kiek4LhC+7rS1v2menXDwXbSgeYPXv2kPGenh6qq6sHl/b29nauXbtGfn4+AJmZmcydO5dLly5FtmDgde/LoM/t7n0RxkpGx5bSExISAPB4PEPGS0pKePz48eAmrrW1lcTExMGuB1i4cCEtLS2jXsMwDFMfL7rbmZkMjNR0Doj9BB7+94Hp1w8FW27kUlJSSEtL49ixY8THx5OUlERZWRkVFRUAtty5A3y6ZpRfywxYuAZCXI1Nx5ad7nQ6OXv2LG63m71797J7924SEhLYt28fkyZNGtzEzZ8/n6dPn+L1egdf29TUxIIFCyype9ansPTnfLTbF62DxKWRrCgwjokU/Z2Xl0d9fT137twZHMvKymLr1q0UFhZSU1PDtm3baG5uJjo62rI6Xz+HR3XQUut/nrwK5q2E6bMsK2kItuz0j1FbWztsaT958iRnzpzB5XKxZ88eSktLLRUOEBMHize8e77kZ/YRDja9pweiq6sLj8dDYWHhkPGUlBSuXLliUVUTkwkjPTY2lv7+fqvL+F4woZZ3xRxUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUukBUeph4P9TFbgEvtpY+EQOBDR88vA3//PO7set/hJZ/g88mmQq2TqLIz8+nvLycQ4cOkZGRQU1NDbm5uTx79owDBw5YXd4wfD74+kt49mDoeO9LeFAN7U2w6nNwWvxdt630iRgI/PDWcOHv09nqDw1O/UnkagqEbZf3YAOBDx8+jMvlwul0UlZWZkWpgP++/fDW6Oe11Vm/zNtSeiiBwJs3b6aqqop169aFdA2zA3kTZyYTTDzsmx5YlJxmaSCwLZf30QKBt2zZMjiWmZkZ0do+htM5KfhzHcGfGw5s2enBBgKPB7MDeb971kzUtNGv64yC+023NRD4QyZiILBzEsxLh6Z/jXzeXDdMtjbQ0p6dHmwgsN1Y8GP4QeLHj8fEW79zB5t2OoDL5RoW1p+Xl8fy5cuZNi2IddQCJkdDxg749io8ugu+N/5x5ySY44bUnxLULSDsGBOIpUuXGrt27RoydvDgQSMpKcmIjo424uPjjaSkJKOhocGiCt/xxmsY5//gf/T1WF3NUGy5vAdiIBD4wzdliouLaWtrw+v10tHRQVtbG6mpqRZV+Y7379tRU62rIxC2Xd4/RAOBzWPCdLpiHipdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdICpdIA7DsFvK2cTFMOD5I3+g0Mun0P6tf3zWQpiRCDOTYeZ8CDEtxHRUugkYBjz5BppvQHfHyOdOi4MFP4KkNOvkq/Rx4u2G/1RBR1Nor5uZDO4tMHVGeOoaCZU+Dnpfwc0voOf52F4/JdYfYhAz09SyRkU3cmOk/y3c/tvYhQN4u+B2Gbz1mlZWUKj0MdJ4HbrbRz5n0+/9j5HoeQGey6aVFRS2lm7XQODXz6Gl1rz5vvvav9uPFLaWnp+fT3FxMQUFBVRWVpKTk0Nubi6NjY2Wxoo9qgdM3gk9qjd3vpGwbfyInQOBn9wPw5zfwNJN4IhAG9q204MJBO7s7CQ7OxuXy0V6ejpZWVk0NDSEtS5vN3hfmT9v/xt43Wn+vIGwpfRgA4EdDgf79+/H4/FQX19PdnY2u3fvDmtto23exkNXGOd+H1su78EGAsfFxbFp06bB45mZmZSUlAR1jVCTkwdYuyyb4t99OWRstB36x45fOD70+a9/9Rsu3PzrmOoK5e0WW3b6WAOBT5w4wdatW8NaW9/b3vDN/aYnbHO/jy07fSyBwEVFRTQ0NHDx4sWgrjHWNyJ7X8G1U0PHPuzYAQY6/GPHP+QfF84S+8mYygoJW3Z6qIHAR48e5dy5c1RVVRETExPW2qbEQvR08+d1ToaYWebPGwhbdjoEHwhcVFRERUUF58+fJy4uLux1ORyQuCS4j+4IhUQXOCPUgraVHoja2lrWrl07+PzevXscOXKE1NRUNmzYMDheV1cX1jrmrTRf+rxV5s43EhNG+kAgcGFh4eCY2+0e8715PEyP94tvqzNnvtnL4IdzzJkrGPRPq2PkbR/c+Mv4/soG/j3Cmt9CdARz4G25kZsITI6GVdv80sZK1DRY9cvICgft9HHT+xLuVsDzttBeNyMR3L/w3yoijUo3AcPw399bvvL/Hj8S0dNhwWeQnBG53fqHqHQTMXz+z1Md+G/Yvm7/D0T09P//N+w8SEj1f6aLlah0gehGTiAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSAqXSD/A767tljqeP2lAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 146.797x204.68 with 1 Axes>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circ = QuantumCircuit(3)\n",
    "circ.ccx(0, 1, 2)\n",
    "circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:57.533035Z",
     "start_time": "2019-12-10T21:47:57.270693Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 748.797x204.68 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.transpiler.passes import Unroller\n",
    "pass_ = Unroller(['u1', 'u2', 'u3', 'cx'])\n",
    "pm = PassManager(pass_)\n",
    "new_circ = pm.run(circ)\n",
    "new_circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "All of Qiskit's transpiler passes are accessible from ``qiskit.transpiler.passes``."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:57.539422Z",
     "start_time": "2019-12-10T21:47:57.535048Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['ALAPSchedule',\n",
       " 'ALAPScheduleAnalysis',\n",
       " 'ASAPSchedule',\n",
       " 'ASAPScheduleAnalysis',\n",
       " 'AlignMeasures',\n",
       " 'ApplyLayout',\n",
       " 'BIPMapping',\n",
       " 'BarrierBeforeFinalMeasurements',\n",
       " 'BasicSwap',\n",
       " 'BasisTranslator',\n",
       " 'CSPLayout',\n",
       " 'CXCancellation',\n",
       " 'CXDirection',\n",
       " 'CheckCXDirection',\n",
       " 'CheckGateDirection',\n",
       " 'CheckMap',\n",
       " 'Collect1qRuns',\n",
       " 'Collect2qBlocks',\n",
       " 'CollectLinearFunctions',\n",
       " 'CollectMultiQBlocks',\n",
       " 'CommutationAnalysis',\n",
       " 'CommutativeCancellation',\n",
       " 'CommutativeInverseCancellation',\n",
       " 'Commuting2qGateRouter',\n",
       " 'ConsolidateBlocks',\n",
       " 'ConstrainedReschedule',\n",
       " 'ContainsInstruction',\n",
       " 'ConvertConditionsToIfOps',\n",
       " 'CountOps',\n",
       " 'CountOpsLongestPath',\n",
       " 'CrosstalkAdaptiveSchedule',\n",
       " 'DAGFixedPoint',\n",
       " 'DAGLongestPath',\n",
       " 'Decompose',\n",
       " 'DenseLayout',\n",
       " 'Depth',\n",
       " 'DynamicalDecoupling',\n",
       " 'EchoRZXWeylDecomposition',\n",
       " 'EnlargeWithAncilla',\n",
       " 'Error',\n",
       " 'FixedPoint',\n",
       " 'FullAncillaAllocation',\n",
       " 'GateDirection',\n",
       " 'GatesInBasis',\n",
       " 'HLSConfig',\n",
       " 'HighLevelSynthesis',\n",
       " 'HoareOptimizer',\n",
       " 'InstructionDurationCheck',\n",
       " 'InverseCancellation',\n",
       " 'Layout2qDistance',\n",
       " 'LayoutTransformation',\n",
       " 'LinearFunctionsSynthesis',\n",
       " 'LinearFunctionsToPermutations',\n",
       " 'LookaheadSwap',\n",
       " 'MergeAdjacentBarriers',\n",
       " 'NoiseAdaptiveLayout',\n",
       " 'NumTensorFactors',\n",
       " 'Optimize1qGates',\n",
       " 'Optimize1qGatesDecomposition',\n",
       " 'Optimize1qGatesSimpleCommutation',\n",
       " 'OptimizeCliffords',\n",
       " 'OptimizeSwapBeforeMeasure',\n",
       " 'PadDelay',\n",
       " 'PadDynamicalDecoupling',\n",
       " 'PulseGates',\n",
       " 'RZXCalibrationBuilder',\n",
       " 'RZXCalibrationBuilderNoEcho',\n",
       " 'RemoveBarriers',\n",
       " 'RemoveDiagonalGatesBeforeMeasure',\n",
       " 'RemoveFinalMeasurements',\n",
       " 'RemoveResetInZeroState',\n",
       " 'ResetAfterMeasureSimplification',\n",
       " 'ResourceEstimation',\n",
       " 'SabreLayout',\n",
       " 'SabreSwap',\n",
       " 'SetIOLatency',\n",
       " 'SetLayout',\n",
       " 'Size',\n",
       " 'StochasticSwap',\n",
       " 'TemplateOptimization',\n",
       " 'TimeUnitConversion',\n",
       " 'TrivialLayout',\n",
       " 'UnitarySynthesis',\n",
       " 'Unroll3qOrMore',\n",
       " 'UnrollCustomDefinitions',\n",
       " 'Unroller',\n",
       " 'VF2Layout',\n",
       " 'VF2PostLayout',\n",
       " 'ValidatePulseGates',\n",
       " 'Width']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.transpiler import passes\n",
    "[pass_ for pass_ in dir(passes) if pass_[0].isupper()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Different Variants of the Same Pass\n",
    "\n",
    "There can be passes that do the same job, but in different ways. For example, the ``TrivialLayout``, ``DenseLayout`` and ``NoiseAdaptiveLayout`` all choose a layout (binding of virtual qubits to physical qubits), but use different algorithms and objectives. Similarly, the ``BasicSwap``, ``LookaheadSwap`` and ``StochasticSwap`` all insert swaps to make the circuit compatible with the coupling map. The modularity of the transpiler allows plug-and-play replacements for each pass.\n",
    "\n",
    "Below, we show the swapper passes all applied to the same circuit, to transform it to match a linear chain topology. You can see differences in performance, where the ``StochasticSwap`` is clearly the best. However, this can vary depending on the input circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:57.681468Z",
     "start_time": "2019-12-10T21:47:57.541513Z"
    }
   },
   "outputs": [],
   "source": [
    "from qiskit.transpiler import CouplingMap, Layout\n",
    "from qiskit.transpiler.passes import BasicSwap, LookaheadSwap, StochasticSwap\n",
    "\n",
    "coupling = [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]\n",
    "\n",
    "circuit = QuantumCircuit(7)\n",
    "circuit.h(3)\n",
    "circuit.cx(0, 6)\n",
    "circuit.cx(6, 0)\n",
    "circuit.cx(0, 1)\n",
    "circuit.cx(3, 1)\n",
    "circuit.cx(3, 0)\n",
    "\n",
    "coupling_map = CouplingMap(couplinglist=coupling)\n",
    "\n",
    "bs = BasicSwap(coupling_map=coupling_map)\n",
    "pass_manager = PassManager(bs)\n",
    "basic_circ = pass_manager.run(circuit)\n",
    "\n",
    "ls = LookaheadSwap(coupling_map=coupling_map)\n",
    "pass_manager = PassManager(ls)\n",
    "lookahead_circ = pass_manager.run(circuit)\n",
    "\n",
    "ss = StochasticSwap(coupling_map=coupling_map)\n",
    "pass_manager = PassManager(ss)\n",
    "stochastic_circ = pass_manager.run(circuit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:57.902461Z",
     "start_time": "2019-12-10T21:47:57.682997Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWAAAAFeCAYAAAC7EcWRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAig0lEQVR4nO3de3RU5b3/8ffMJCTBlEscJRguEnIRpkyECKbQGtJaDdYLrUKbX3+0jekKi6SnFVZ7fl320NaDJ6el1OPp79dTtcc2p0cbTxPT1mrsRU3GS0CMATQqjlwkBIMCghKIQDLz+2OXQCCXCZmZZ0/yea21F86zd575Zpx85plnP7PHEQwGg4iISNQ5TRcgIjJaKYBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIQpgERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYogCWETEEAWwiIghCmAREUMUwCIihiiARUQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExJA40wWIXKiTXbDvMLS9Dx0nrLbxSTA1BSZPgDiX0fLEsGAQ3jsKew/BwQ4IBCAxHtImWs+RsQmmK1QASwx670N49k14aRec6Or7mOQEuHomfCobJoyNbn1i1oku2LQDXnjLeq70xemAOVOs50fGpOjWdzZHMBgMmrt7kdB1B+Dp1+Evr1r/HYqEOFiaC3kzweGIbH1i3lvvwiOb4FBH6D8zfwZ8PtfMiFgBLDHhZBf86lnY3n5hP78gHb50NTh11mPEet4PNS9d2M9enAxln7H+jSY9HcX2AgH49XMXHr4Am3dBTVP4ahJ72bzrwsMXrBHzfzwNHR+Fr6ZQKIDF9p59E954Z+Bj7v2ytQ2k8S14ZW/46hJ7OHgUqjcPfEwoz49DHcML8QuhAJYe3QHw74fmt61/AyHOs0bSkePw+Lbw9Ve92ZrOMO1UN7y+z3qsd70HAU0EXrCal6zHMxy2tsJrbeHpKxS2XgURCAS45557uP/++9m7dy/Z2dn87Gc/o7S0lPz8fB544AHTJY4YL/jhz6/C0bPego1PgiU51gksUxrfgq4w/XGB9fs17zH3OwWC8PRrUP8GHD95pt2dDDfPA+9UM3XFqv0fDG9qqi++N8EzJbx99sfWI+CSkhLWrVvHypUrefLJJ1m+fDlFRUXs2rWL3Nxc0+WNGH9rgeqXeocvwAed1hnl+jfM1BUMWsuJwi0SfYbq903wxLbe4QvW299fPQtNu83UFasi8f/Sv9+a1ogG246Aq6qqqKyspKGhgfz8fAAKCgpobm6mtraWefPmGa5wZDh8DOoGeYv/py2QezmMS4pKST0OdcCHETgpsvd9a1Qd7Q9qtB6C5/x97zs9A1G9GeZMtZbPyeB2H4hMv28fBPfHItP32Ww7Aq6oqKCwsLAnfE/LyMggPj4er9cLwNtvv01+fj5ZWVnMmTOH5557zkS5MWvjjjN//P0JBOHFnVEpp5d9hyPTb3cA2j+ITN8DaXwLBluKfKILtu6JSjkxLxCEd45Epu+29yPT77lsuQ64ra2NqVOn8uCDD3L77bf32ldUVMT27dvZsmULANdffz233HILZWVlNDY2smzZMnbv3s2YMWMGvA+HVuUD8Llv1pCeewtOV/9DrkB3F/5N/8NffvG/o1gZeBZ/nWu//stebYOdye7PHQ/3vl37r9ey97WnL7CyC7P8B41MzvzEgMcEA900P/lvPF/1nShVFbviEsZS/uCxXm3hen685vsVT/2y5AIrg1Bj1ZYj4LY26zRkampqr/bOzk58Pl/P9MPBgwd5/vnnKSmxHqiFCxdy2WWXUV9fH92CY1h398nBDwICIR4XTsFAGM++RbHv/nR3nSA42NISh8PIYx2LIvr8CEZnCZAtZ5rcbjcAfr+fG264oad9/fr1tLe395yAa21tZdKkSSQknPkM4YwZM9izZ/D3cDYc+BuxeRf8duPAxzhdcfz4zmL+en9xdIr6O/9+a3H82c4dqZx2euTT3/5zbd1cH/VPPT31Gjy+deBjHA4nv/m/dzLzf+6MSk2xLBiEtbW9PzwRrufHP37z6zz1y68Pr8AQ2DKA09PT8Xq9VFRUkJKSQlpaGjU1NdTV1QFoBUQYXTkNHmuGYyetJ/S5HA74WKJ14ZJomzIxMv2OHQMpF0Wm74HkzbSuY9HV3fe8uwPrKm7pl0S5sBjlcFhXNRvsQzoXYkpK+Pvsiy2nIJxOJ9XV1Xg8HlatWkVxcTFut5vy8nJcLlfPCbhp06bx7rvvcuLEiZ6f3b17N9OnTzdVeswZEwelBf2fdU+Kh9LFZi7tODYBpl8c/n6vmGzmwjzJiXD7NeBy9n0ybvxYa79OT4Tuisnh73NMHKRfGv5++2LLAAbIysqivr6eY8eO0drayrp163j11VeZPXs2SUnWeii3282iRYt48MEHAWhsbGTfvn0UFBSYLD3mTLsY/vEGKJh1pi05AT49G75zQ/RGA31ZlBUbfYZq1mXWY7ow80zb+CQonAPfXhKdpU8jyfx0GBPmwcFVM6zrBkeDbQO4L01NTedNP9x333088sgjZGVlUVpaSlVV1aArIOR8Kclwy1lLq+++DW6eCxMNvFU/27zpcOm48PWXOcn8W/xJ42HZgjO37/oCFHqtEbIMzdgxkH9F+PqLd8GnZw1+XLjYcg64Lx0dHfj9fsrKynq1p6en8+yzzxqqSiItzgX/6xPw738ZfL3yYBLi4Et5eos/0lw/B1rawrO2+6a50X0XEjMBnJycTHd39JcOiXmXu+G2+dbHpfsz2NltpwO+sij613uVyItzWXPnP/vb+R+nPy2U1Q/z0+GTUZ6eiqkpCBm9FmVZF1SPu4BnbFI8fD0/ehdYkei7ZBz8w2fhkgscvX4qG4qutl6ooylmRsAieRkw4xLrAkG7D4b2M540WL7AWmEgI9ul46wTnE9sg+feDO0SnxMvsp4fsy6LfH19UQBLTJk0Hr55nXWxlMYd1rV0z/7+LwfWaChrkrXS4LIIrSUWexoTZ32/26dnWdc5eW2fdb2Is79DMDkBprutL231pFnLAk1RAEvMcTiskfCMv69mOH4C7qyx/vtfl0dvCZHY1/ix1sqSQq/1wZdvP2K13/UFGJdonxOxCmCJeWd/m63CV8519oeIxkf5kqqD0Uk4ERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYogCWETEEAWwiIghCmAREUMUwCIihiiARUQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFjGsq9t0BaHrDsBHp+DEKQgGTVcT+/StyCJRcqobtrVa2973z7R/5xG4dBxMuxiumgFZqfb52nSAdw7Dpp2w+wC8c8QKYYCxY2BKCsy6DBakw0UJA3YjfVAAi0RYMGgF2ONb4diJPvYD735obS/ttsJ42QLInBTtSns7eBSqN8Ob+/vef/wk+Pdb2xPb4JosKPTCGKVKyPRQiUTQ8ZPwm+dhe3voP/Peh/Dzp2DxFXDzXHAamCjcvMsK31MhTo90dcMzb0DLPrj9GkgdH9n6RgrNAYtESOdJ+I+nhha+Z2vYDlWbIBDludbn/fDbjaGH79ne+xB+9ldoPxL2skYkBbBIBASD8PBGaDvc/zH3ftnaBvLSbqh/Pby1DWTHu/DoSwMfM1jdx0/Cf/qsE3UyMAWwSAS8/Da0tIWnrydfgf0fhKevgZzoskbc4RhwH+qAP20NQ0cjnK0DOBAIsGHDBjIzM0lMTCQnJwefz0d2djalpaWmyxPpUyAAddvC119XAP76avj668+LO63gDJcX/HD4WPj6G4lsHcAlJSWsW7eOlStX8uSTT7J8+XKKiorYtWsXubm5pssT6dMb7fB+mINn21442hnePs8WDFpzv2HtE2h8K7x9jjS2XQVRVVVFZWUlDQ0N5OfnA1BQUEBzczO1tbXMmzfPcIUifXstTFMPZ+sOWCfz5qeHv2+Agx3WCbRwe+0d+NyV4e93pLDtCLiiooLCwsKe8D0tIyOD+Ph4vF4vAN///vfJysrC6XRSU1NjolSRXs7+kEUs9Auw91Bk+t1/BE52RabvkcCWI+C2tjZaWlpYvXr1eftaW1vxeDwkJFgfuyksLORrX/sat99++5Duw2GnjxrZyLcesk7BxNrjY6e6V953iMTklJ7bg6106G//HQ/3vv1fjzzOrfNvGmZ1fZt/850sXP4vIdU12P6z6w4EYdK0bI60h3l+Y4ii/fwIhvg5bdsGMEBqamqv9s7OTnw+H0uWLOlpW7hwYVRrExmMwxWZP6tI9QvgjGDfLld8xPqOdbYMYLfbDYDf7+eGG27oaV+/fj3t7e1hOQEX6ivUaHN69BJrj4+d6v7h7+HI8TO3zx3JnnZ6BNnf/nMtvbGQP/w4Mr9fw3b4w8u928JV9443W5gw9sJrCwc7PT/OZssATk9Px+v1UlFRQUpKCmlpadTU1FBXVwegFRBia5dN6B3A4ZI2Mfx9RrrvixJgfFJk+h4JbHkSzul0Ul1djcfjYdWqVRQXF+N2uykvL8flcvWcgBOxo8vdsdUvwNQUcEUgDaZfbK8ru9mNLUfAAFlZWdTX1/dqW7FiBbNnzyYpSS+pYl9XzbA+vRbON7sXJ8PMS8PY4TkS48E7FbbsCW+/V88Mb38jjS1HwP1pamo6b/ph7dq1TJkyhY0bN7Jy5UqmTJnCzp07DVUoAinJVpiF0yezIn9VtGuyw9vfxLHw8Snh7XOkiZkA7ujowO/3n/cBjHXr1tHW1saJEyc4dOgQbW1tzJypl10xa2muNaoMh7SJ4Q/Hvsy4BPLC+Kez/OrITGuMJLadgjhXcnIy3d0x9N0tMqpNvAiWzYf/buz/mFBWESTEwZc/Eb0gW5oLuw4M/Km4UOr+VJb1TRkyML0+iURI7gy4bf6F/3xCHJQWwGURXP1wrsR4KPsMXPKxC+9jfjp8XguVQqIAFomgT2bBygKGvA52uhvWFEb2xFt/JoyFO66H3MuH9nPxLrj1KijKM/MtHrEoZqYgRGLVrMvg/3wOnn3TujrYBwNc1SxtovX2fUG62RC7KAFWLLJGsw1vDPytHglxMH8GFMy2VmtI6BTAIlGQNAaunwPXemDPQevCOgc+tK71OybOmmaYlgKTJ9hr3ewVk63t8DF4+yC0vQ9P//0bOj6XA1MvttYnh+uE42ijABaJIpcT0i+1tlgy8SJrmzv9TAB/9uNmaxoJNFMjImKIAlhExBAFsIiIIQpgERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYogCWETEEAWwiIghCmAREUMUwCIihiiARUQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIbYO4EAgwIYNG8jMzCQxMZGcnBx8Ph/Z2dmUlpaaLk9EZFjiTBcwkJKSEmpra1m7di25ubk0NjZSVFTEgQMHWLNmjenyRESGxbYBXFVVRWVlJQ0NDeTn5wNQUFBAc3MztbW1zJs3z3CFIiLDY9spiIqKCgoLC3vC97SMjAzi4+Pxer0cPnyYG2+8kaysLHJycrjuuuvYsWOHoYpFRIbGlgHc1tZGS0sLy5YtO29fa2srHo+HhIQEHA4Hd9xxB36/n23btnHjjTdSXFxsoGIRkaGzbQADpKam9mrv7OzE5/P1TD9MmDCBa6+9tmf/woUL2b17d0j34XA4tPWxxerjE6t1x+IWi491tGsOlS0D2O12A+D3+3u1r1+/nvb2dnJzc/v8uXvvvZelS5dGujwRkbCw5Um49PR0vF4vFRUVpKSkkJaWRk1NDXV1dQB9BvBdd93Fjh07eOaZZ0K6j2AwGNaaR4o7Hrb+jbXHJ1brjkWx+FjbtWZbjoCdTifV1dV4PB5WrVpFcXExbreb8vJyXC4XXq+31/F33303jz/+OH/+858ZO3asoapFRIbGliNggKysLOrr63u1rVixgtmzZ5OUlNTTdtddd1FXV8ff/vY3JkyYEOUqRUQunG0DuC9NTU3k5eX13H7ttdf44Q9/yMyZM1m8eHFP+9atW6NfnIjIEMVMAHd0dOD3+ykrK+tp83g8tpvTEREJVcwEcHJyMt3d3abLEBEJG1uehBMRGQ0UwCIihiiARUQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIQpgERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYkjMfC29KbVNsO+wmftOmwhfuMrMfYtI5CmAB7HvMOx8z3QVIjISaQpCRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExBBbB3AgEGDDhg1kZmaSmJhITk4OPp+P7OxsSktLTZfXp5q7F7P5D3eH3C4SC7q64QU//PiJM20P+uCt/eZqCsXeQ/BQ45nb6/4Iz7wOH50yV9PZbP1R5JKSEmpra1m7di25ubk0NjZSVFTEgQMHWLNmjenyREaFk11wf731kXzHWe0t++DVNrjpSviMx1R1/Xt5Nzy0EQieaTvUAY9tgRd3wjc+Cx9LNFYeYOMArqqqorKykoaGBvLz8wEoKCigubmZ2tpa5s2bZ7hCkdHhseYz10M5K8sI/v3Gn7bC1IshKzXalfXv3Q/h4Y1najzXex/CbzfCyoLo1nUu205BVFRUUFhY2BO+p2VkZBAfH4/X6wVg6dKleL1e5s6dy4IFC3jqqadMlCsyIh0/CZt2DXyMwwG+7dGpJ1Qv+CHQT/iC9ULyxjtWEJtkyxFwW1sbLS0trF69+rx9ra2teDweEhISAKisrGTChAkAbNmyhcWLF/P+++/jcrkGvA+HwzHg/tNu/V49U2YtHlL9m//4L7xct6FX26mPOpj28WuH1I/P18A3r4vuS/S3HrKetaE+PnYRq3Xb3YwrP8fN3358wGOCQXhlzykcjjFRqmpwX/3pW0yYlDHocdfd9g9s+9v/C/v9B/sbep/DtgEMkJra+z1NZ2cnPp+PJUuW9LSdDl+ADz74AIfDEfIvHykLbvkeC5b+U6+2mrsXmylGZBiccaGFqtPlsobChv/2TnOFWneIx0WKLacg3G43AH6/v1f7+vXraW9vJzc3t1d7eXk56enp3HrrrTz66KPExQ3+uhIMBkPa8vMXh+33Gqr8/MUh1xmubaiPj122WK3b7tsLT9UO+jx1AJPGOwkGAsbrPb1dPWcaobwZevg/fxqR+w+VLUfA6enpeL1eKioqSElJIS0tjZqaGurq6gDOC+Cf//znAPh8PlavXs2zzz5LcnJy1OsWGWkmjYf0S2D3gd4n4M4WBD6VFc2qBrcoE15/p//9DmDCWMieHLWS+mTLEbDT6aS6uhqPx8OqVasoLi7G7XZTXl6Oy+XqOQF3rvz8fJxOJy+88EKUKxYZuW6dD/FxvZegne1yN1w9M6olDWpWGuRM63ufA2u25It54DR8ysCWI2CArKws6uvre7WtWLGC2bNnk5SUBEBHRweHDh1i+vTpgHUSbufOncyaNSvq9Z522z81DKldxO7SJsK3roNHX4JdB860u5wwfwZ8PhfG2CxJnA74yiKoS4bn/NZa5tMmT4ClufZYNmezh21gTU1N5OXl9dw+duwYX/ziF+no6CAuLo7ExEQeeughpk3r56VPRC5I2kT45nWw/wNoP2KF78xL4aIE05X1z+WEm+bCdR+HHe/CiS5wfwymphDS/HA0xEwAd3R04Pf7KSsr62mbNGkSmzZtMliVyOiSOt7aYklCPHimmK6ibzETwMnJyXR3d5suQ0QkbGx5Ek5EZDRQAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIQpgERFDYmYdsClpE0fnfYtI5CmAB/GFq0xXICIjlaYgREQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIQpgERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYogCWETEEAWwiIghCmAREUNsHcCBQIANGzaQmZlJYmIiOTk5+Hw+srOzKS0tNV2eiMiwxJkuYCAlJSXU1taydu1acnNzaWxspKioiAMHDrBmzRrT5YmIDIttA7iqqorKykoaGhrIz88HoKCggObmZmpra5k3b57hCkVEhse2UxAVFRUUFhb2hO9pGRkZxMfH4/V6e7U/8MADOBwOampqolmmiMgFs2UAt7W10dLSwrJly87b19raisfjISEhoaftrbfe4te//jV5eXnRLFNEZFhsOQXR1tYGQGpqaq/2zs5OfD4fS5Ys6Wnr6uri9ttv5xe/+AV33HFHyPfhcDjCUutI862HgkDsPT6xWreMTMFgMKTjbDkCdrvdAPj9/l7t69evp729ndzc3J62devWsWTJEq688spoligiMmy2HAGnp6fj9XqpqKggJSWFtLQ0ampqqKurA+gJ4BdffJFnnnmGhoaGId9HqK9Qo80dD1v/xtrjE6t1y+hmyxGw0+mkuroaj8fDqlWrKC4uxu12U15ejsvl6jkBV19fz86dO5k5cyaXX345mzZtoqysjJ/+9KeGfwMRkcE5gjE0ZFixYgXbtm3jlVde6XP/4sWL+cY3vsFtt90W5cpGjtMjyXu/bLaOoYrVumV0s+UIuD9NTU295n9FRGKZLeeA+9LR0YHf76esrKzfYy5kLlhExJSYCeDk5GS6u7tNlyEiEjYxNQUhIjKSKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIQpgERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYogCWETEEAWwiIghCmAREUMUwCIihiiARUQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIQpgERFDFMAiIobYOoADgQAbNmwgMzOTxMREcnJy8Pl8ZGdnU1paaro8EZFhiTNdwEBKSkqora1l7dq15Obm0tjYSFFREQcOHGDNmjWmyxMRGRbbBnBVVRWVlZU0NDSQn58PQEFBAc3NzdTW1jJv3jzDFYqIDI9tA7iiooLCwsKe8D0tIyOD+Ph4vF4vAIsXL2bPnj2MHz8egMLCQn70ox9FvV4RkaGyZQC3tbXR0tLC6tWrz9vX2tqKx+MhISGhp+0nP/kJt91225Duw+FwDLvOkehbDwWB2Ht8YrVuGZmCwWBIx9nyJFxbWxsAqampvdo7Ozvx+XyafhCREcGWAex2uwHw+/292tevX097ezu5ubm92r/3ve8xZ84cbrnlFl555ZWQ7iMYDGrrY4vVxydW69Y2MrdQ2XIKIj09Ha/XS0VFBSkpKaSlpVFTU0NdXR1ArwD+zW9+w9SpU3E4HDzyyCNcf/317Nixg4suushU+SIiIbHlCNjpdFJdXY3H42HVqlUUFxfjdrspLy/H5XL1nIADmDZtWs+835e+9CXGjBnDm2++aap0EZGQ2XIEDJCVlUV9fX2vthUrVjB79mySkpIA+Oijj+jo6OiZsnj66ac5evQoGRkZUa9XRGSobBvAfWlqaiIvL6/n9ocffsiSJUs4efIkTqeTcePG8dhjjzFu3DiDVYqIhCZmArijowO/309ZWVlP26WXXsrLL79ssCoRkQsXMwGcnJxMd3e36TJERMLGlifhRERGAwWwiIghCmAREUMUwCIihiiARUQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGKIAFhExRAEsImKIAlhExBAFsIiIIQpgERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYogCWETEEAWwiIghcaYLEPOOfgSv7IW9h860/ftfIHUCTLsY5kyB5ERj5YmMWArgUexQB9Rtg62t0B3ovW/3QWvbuAMefQnmTocbcmDiRWZqFRmJFMCj1MYd8IeX4UTX4Md2BeCl3fBqG3zhKliQHvn6REYDBfAoVLcN/toy9J/76BT8diMcOQ7XfTz8dYmMNjoJN8q84L+w8D1b3TZ4cWd46hEZzRTAo8jBo/CH5oGPuffL1jaY378Mh4+Fpy6R0crWARwIBNiwYQOZmZkkJiaSk5ODz+cjOzub0tJS0+XFnD9thVPd4enro1PwxNbw9DUcnSfhuTfP3N68C06GMK8tYge2ngMuKSmhtraWtWvXkpubS2NjI0VFRRw4cIA1a9aYLi+mHDkOr+4Nb59bWmFprrklas1vQ9Wm3i8qv91onVwsvgYyJ5mpSyRUtg3gqqoqKisraWhoID8/H4CCggKam5upra1l3rx5hiuMLdtaIRAMb5/dAavfRVnh7TcU29vhv1+Avn6lzlNwfz2suR4umxj10kRCZtspiIqKCgoLC3vC97SMjAzi4+Pxer0AnDx5kjVr1pCZmcmcOXO45pprTJRre62HBj/mQux9PzL9DubJbf3vCwahuxuefj169YhcCFuOgNva2mhpaWH16tXn7WttbcXj8ZCQkADAnXfeydGjR9m+fTsul4v29vZolxsT9n8QmX7bj0Sm34EcOAp7BnlBCQJb98AXr4YxtnyWi9g4gAFSU1N7tXd2duLz+ViyZAkAx48f5/7772fv3r24XC4AJk+eHNJ9OByOMFZsf1/5yXYmTs7u1TbQaof+9t3xcO/bTc3bcCy5cnjFDdHkzIUs/8ELgx7XHYSUS9M4dvidKFQlckYwGNp8ny2nINxuNwB+v79X+/r162lvbyc3NxeAHTt2MH78eO655x4WLFhAXl4ev/vd76JebyzoOvlRRPrtPhWZfgfS2XEwpOMCgS5OHD8S2WJEhsGWI+D09HS8Xi8VFRWkpKSQlpZGTU0NdXV1AD0B3NXVxb59+5g8eTKbN2/m7bffZuHChWRmZjJ37twB7yPUV6iR4r+ehy17eredO5qFMyPfvvb15ebrruaRH0T3sQwGYcOT8M7hvk/CATiAudPjOPWRFiuLfdlyBOx0Oqmursbj8bBq1SqKi4txu92Ul5fjcrl6TsBNmzYNgK9+9asAXH755SxatIjNmzcbq92upl0cmX6npkSm34E4HFA4Z+DwdTjgM55oViUydLYMYICsrCzq6+s5duwYra2trFu3jldffZXZs2eTlJQEWFMVhYWFPPHEEwAcOnSIzZs3k5OTY7J0W8qZagVTODkd4J0a5k5DNGeqdYLN+fdfyuGwNoB4F5TkR+5FRyRcbDkF0Z+mpiby8vJ6td13332UlJTwz//8zwSDQb773e+ed4xASjLMToPX9oWvT+9UGD82fP0N1ScywJMGm3Za1zJ2OGDmpTA/HcaOMVeXSKhiJoA7Ojrw+/2UlZX1ap8+fTpPPfWUoapiy01z4c126/KSwxXvghuvHH4/wzUuSVdmk9jlCI62s1GjXP0b8MdBLsgTiluvgk9lD36ciPTPtnPAEhmLr4Brhhmcn54NnzTw8WORkUYj4FEoGISG7dbVzIYyHRHngpuutAJ8lH2ORSQiFMCj2P4P4E9b4PV9/S/pAmv1hGcK3DIXLhkXrepERj4FsHCow7puwt73rVA+1Q1jXNa3Ik9Nsb6QU1/GKRJ+CmAREUN0Ek5ExBAFsIiIIQpgERFDFMAiIoYogEVEDFEAi4gYogAWETFEASwiYogCWETEEAWwiIghCmAREUMUwCIihiiARUQMUQCLiBiiABYRMUQBLCJiiAJYRMQQBbCIiCEKYBERQxTAIiKGKIBFRAxRAIuIGPL/AdggpWxyTkfAAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 447.797x445.48 with 1 Axes>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:58.238179Z",
     "start_time": "2019-12-10T21:47:57.904473Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvkAAAFeCAYAAAAfTQCzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAA8f0lEQVR4nO3deXyU9b33//fMJCTsi2HfQxKUSNiVRVnUKqCn9bhQ0Xpb5NxgxJ5jrb3vnnrsqY3N7xSptffRqu1Bqa1iBWlLFVzYorIaFQRBIwQMgcgS1oTsM78/LifLZDJzBWbmuubi9Xw85gFzXVeufJiEmfd85/v9XC6fz+cTAAAAAMdwW10AAAAAgMgi5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DAJVhcAAABgN7V10qGT0sET0tlKY1vHZKl/N6lvVynBY219TlJdKxWfkIpPSuVVxrYu7YzHuncXycOQ9Hkh5AMAAHyjtEx67wtp2z6poib4MW3bSFemSlcPlS7pENv6nOTr01Le59JHB4ygH0zHZGlCmnRVhtSpbUzLi3sun8/ns7oIAAAAK3m9Rrh/Y4cxim9Goke6aaQR9t2uqJbnKLV10rufSe/ukrwmU2jbROmWsdLYwZKLx9oUQj4AALio1dZJL22UPj14fl8/YoB090Sm8JhRWSP9YYO07+j5ff2kdOnWcbypMoNZThFQXiUdPmn++COnpdMV0asHAACY4/NJf950/gFfknYUSa9sNs6FltV5pcV55x/wJWnjl9LKjyNXk5MR8i/QuSrp2bXS02uMxTnhHDltHPv0u9IZgj4AAJbaWihtLwp9zFN3GbdQPv5K+nB/5OpyorW7pS+PhD7GzGO94XNpz+HI1eVUhPwL1CZB6tpeOldthP1QQd8f8M9WGl+TnBi7OgEAQFPlVdLfPorc+VbkN3SHQVPHz0pv74zc+f6y1fzaiYuVrUO+1+vVokWLlJ6eruTkZI0YMUJ5eXkaOnSo5s2bZ3V5koz5d/dcJQ3vFzroNw74Gb2kf5livEEAAADW2LrPmCMeKZU10oeFkTufk3xQYEzXiZRT5y5sitXFwNYhf+7cucrJydH8+fO1evVqzZo1S7Nnz1ZhYaHGjBljdXn1wgV9Aj4AAPazZV/kz7l5b+TPGe/qvNK2KLz5icbPz0lsGzWXLl2qJUuWaMOGDZoyZYokadq0afr444+1YsUKjR492uIKm/IH/T9+IO0sNoJ+9rVSGw8BHwAAuymvko6eifx5j5wx1uu1S4r8uePV0TPGIGikHThutD5123rI2jq2fVhyc3M1ffr0+oDvl5aWpsTERGVlZUmSDhw4oClTpigjI0PDhw/X+++/b0W5kpqP6D+zRvrtOwR8AADspthEs4zzdagVHfcuBtF6rKtrpWNno3NuJ7Bl5CwuLtauXbv0wx/+sNm+oqIiZWZmKinJeIs8f/58ffe739X999+vTZs26fbbb9f+/fvVpk2bkN/DFcUrKbg9ifrOj9/UgMu/JUkq2btVz9w7TQuqaacDAIAdpF95u2b+4LUm28J1dWlp/4MvN70/89u3au+HKy6gOmcZecO/asrdv22yLVKP9ahxE1Xy5eYLqC7+mL3ElS1H8ouLiyVJvXr1arK9oqJCeXl59VN1jh8/rg8++EBz586VJE2cOFF9+vTR+vXrY1twgM49UnVJv+H197v2SlfXPpdaWBEAAGjM541eaxZvFM8dj6L5ePBYt8yWI/kpKSmSpIKCAs2cObN++8KFC1VSUlK/6LaoqEg9e/asH9WXpMGDB+urr74K+z2idaHfxots/ZI7dNO/LPxY2ddK/btF5dsCAIBWKCqVnnyr6bbAUWI//6hyS/sD5b3zN/Xj9b7ermLpf/KabovUY12wc6s6tT3/2pzMliE/NTVVWVlZys3NVbdu3dS3b18tX75cq1atkiRbddZpLLCLTsHXxvbh/ZouxiXoAwBgrT5dJI87sm0dJeOcvTpH9pzxLlq5p3NbEfBDsOV0HbfbrWXLlikzM1PZ2dmaM2eOUlJStGDBAnk8nvpFtwMGDNCRI0dUVdVw5Yn9+/dr4MCBMa85WJtMPzN99AEAQOwkeKS0npE/b0Yv49xo0Lmd1LtL5M97WZ/In9NJbBnyJSkjI0Pr169XeXm5ioqKlJOTo507d2rYsGFq29Z425aSkqJJkyZp8eLFkqRNmzbp0KFDmjZtWkxrDdcH3+wFswAAQOxclR4f53SCaDwuk3isQ7JtyA8mPz+/2VSd5557Tq+++qoyMjI0b948LV26NGxnnUg6W2muD36woF9aFrMyAQBAgMy+kZ1KMuASRpdbMjZVuqRD5M6X2Vfqf0nkzudEcRPyy8rKVFBQ0OwiWKmpqXrvvfdUUFCgXbt2NeurH20dkqTxQ8z1wW8c9EcNlLq1j12dAACgKbdbunOCMY/+Qnm+ORcXZgouKUG6Y3xkztU2UZp1RWTO5WQuX7TazFxEfD5j4U7gHDz/yvDAXq91XsntkqLYqh8AAJiUv196eZN0voHIJel7k6QxgyJYlEOt3yP9/ePz/3qPW5o3VRraO2IlOZYtu+vEG5erdYtsIjFiAAAAImPsYGPw7dWtxlVUWyMpQZo9XhoZ+54fcWnaZVKCW/rbR1JdK99VtW8j3XO1MXsC4RHyAQDARW/0IGNO/WvbGlpgh5PRS/rulZGda34xuHqoNKSH8aaqqNTc14zoL902TupIy0zTmK4TRS1N1wEAAPZVVCpt+lLae1Q6frbpvpSOUloPo7MLCz8vjM8nFR6VNu2VCo9JJ8sb9rkk9egkZfQ2HmuuPdB6jOQDAAA0MuAS4yZJFdXSvy8z/v7/3S61jV0DP8dzuaQhPY2bJJVXSY8sN/7+X7OkpETranMCZocDAAC0oHGoJ+BHV/ukhr8T8C8cIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIT9CfL7oHBtNra3DLnUDAOyP15jY4bFGMIT8CHjvC+mljVKdN/yxXp/02jbprZ3RryuUk+XSb96WDp4wd/yB48bxpyuiWxcAIP6drZSeekcqPGru+MMnpSffkkrLoluXEx0/azx2JafMHb/viPGzKauMalmwAUL+BTpbKa3aIX3ylfSnMEHf65OWbZM275XWfmbtk9m6PVJRqfTs2vBB/8Bx6bl1xvEb9sSmPgBA/Hr/C+mr49Jz68MH/cMnpWe+eS1a81ls6nOSNZ8Zj93Ta8IH/X1HpOc3GD+b9wtiUR2sZOuQ7/V6tWjRIqWnpys5OVkjRoxQXl6ehg4dqnnz5lldniSpY7J03zVScqK0vajloN844Cd6pP89VbqkQ8zLrfedUdLwftK56tBB3x/wK2ukkQOkm0bGtEwAQByaPlwaO0iqrg0d9P0Bv7xKGtZHumVsTMsMa99R6Y8fNNz/4wfmP52IlVvHSZf2Nh7DUEHfH/Cra6Vxg6UbLo9llaH5fNKew9IfNjRsW7rF/GwDq5w6Zwz0/nKl9Ojr0m/ekrbsNR5jO3D5fPadmTVnzhytWLFCjz76qMaMGaNNmzbpmWee0bFjx/T0009r/vz5VpdYLzAM3z1J+tFSY9+TdzYP+Bm9LC1XklRbZzxh7SyW2rWRsq+V+ndr2B/s3+Sx9dtCAIBdeL3SK5ul/ANSmwTpvmlSao+G/YEBf85k4zXSDnw+6Y3t0trdkkuSPyj5//6tTOnGkVZV11xNnbQ4T/q8RGqfJD1wndS7S8P+wIA/e7zktsnrudcnvbpF2lYouVwN6wX8j/UtY6XJQ62sMLh9R6Xfr5eqGgV6f819u0r3X2v8LKxk25C/dOlS3XnnndqwYYOmTJlSv/3WW2/VihUrtG3bNo0bN87CCpsLDMXbi4ztE9LsF/D9Wgr6BHwAwIVqKejbOeBLRuB8ZXPoY743URo7ODb1mNFS0LdzwJeM6UZvbA99TPY10tDeMSnHlLJKKefvxmMaLES7ZNR73zWxrqwpG/2Ym8rNzdX06dObBHxJSktLU2JiorKysiRJP/vZz5SRkSG3263ly5dbUWq9QSlNp+742TXgS1KCR7rnqqZTd7YVEvABABfO7ZbunNB06s62ffYO+D6ftO6bEfyWuGQcY6dh0kSPNHdK06k72/bZO+DXecOv9XO5pA2fx6Yes7bsM0bwW/rx+2S82fr6dCyras5GP+oGxcXF2rVrl26//fZm+4qKipSZmamkJOMzkOnTp+utt97S5MmTW/U9XC5XVG6Du7v0x5+OV9W5hp9sbXWF/vL4tRraOzrf80JviQkuzbu2jfbm/1Xnqo3Ri8oaqWDra7p3aoISPNbXyI0bN27c4vPm8bj0v672aM8Hf1J1rfTKFiOE7t/+pu6/IVltEqyvsfGtS8/B+vp0ywFOMvYdPiV17j7Q8nob39okuPTA9GQd2LFa5VXGY11dK+1+/4+6+yqPPDZ7Pe9/6USVVYXOaz6ftPuQVwltki2v13/7n+Vb5POGb6n4T3f/e1S+v1m2DfmS1KtX02HviooK5eXlafTo0fXbJk6cqNTU1JjWF87Xhdt0cPf6hvt7t6h4T56FFYXnravRx6sW1d+vq63SR288IZ+3zsKqAABO4PN59cmqX6u2uqFv48erfq26mjAJzwKJSe1NH5uQ1C6KlZyfupoqffTmr+vv19ZU6uNVv5bPZ6LPd4yZfaxdLrc8iclRrsa8xOSOcoX5SMTn81n++5Fg6XdvQUpKiiSpoKBAM2fOrN++cOFClZSUaMyYMRf8PaK1FKFxFx2PW/K4pH7DpumFDbW2nvbSeA6+JHkSkjT3Vx82W4wLAEBrNZ6D7zf7Z+uaLca1g4pq6T9eD3/tG49bOnxgj5ITY1OXWY3n4EtSQmKy5j/5abPFuHZw/Kz0+Mrwx7VrI1WUnZLb/CB2VL3wnrGWMVSUdLlc+u2vHtUVyx6NXWEBbBk5U1NTlZWVpdzcXL300ktau3atsrOz9cILL0hSREJ+NAS2yZw/Tbr/uvDtNa0WGPAlc+01AQAIJ3CRrV+49ppWadtGGjUw/Jz8MYNk+4AvmWuvaZWUjlJ6z9CPtSRNTJdtAr5kNFQJN1aclGCsa7SSLUO+2+3WsmXLlJmZqezsbM2ZM0cpKSlasGCBPB5P/aJbOwnWBz+jV/PFuHYL+oFddPwCF+MS9AEArRWsi46fmT76Vpk+3Aj7waY/u1xSuyTphuGxryuUwC46foGLce0W9L892mgCEvSxltS1vTT10piXFdLQ3lJm39DH3DzG6ChlJVuGfEnKyMjQ+vXrVV5erqKiIuXk5Gjnzp0aNmyY2rZta3V5TbQU8P3sGvSDtcn0C9Z1h6APADArXJvMwK47dgr6KR2lf71e6te1+b7+XY19Vl7QMlCwNpl+wbru2Cno9+8mLbhO6t6x+b60ntK/XS91sM90fEnGpwpzrpYmpjX/hKF9kvH4T0izprbGbNsnP5jLLrtM48eP14svvli/7dFHH9WLL76oY8eOqUOHDmrbtq3y8vI0ZMiQmNQULuA3Zqfe8y3V8uDLxv6n7jL+DHfBLAAAAoUK+I1fZ8JdMMsOikqN10yXjEG7/pdYXVFTLfXBD3w9D3fBLKv5fMYbveKTRnBO7yX16mx1VeGdrTSuditJ9042ft8TbNIS1rYj+YHKyspUUFDQpLOOJOXk5Ki4uFhVVVUqLS1VcXFxzAK+JJ2rkgq+NtcHv/GI/v5j0pmKmJXZzBcl5t5sBI7oF5TEtk4AQPz58oi5PviBffT3HI5pmaYMuMS44urVQ+0X8CVp92FzffADR/T3HoltneG4XNKQntKUS43HOh4CviR1bPQpQ1Z/+wR8yabddYLp0KGD6urs186xQ7Lxbri0zPhYKRx/0G/XxphnZpXrLzc+GhsxIPynCf6g/+lBafSgmJQHAIhjUy6VOreVMvuFv9CVP+hf1lcaPTA29TnJTSOlPl2lUQPCX+jKH/Q/O2T9olBEX9yEfDvr2r51gX1QSvRqMcvlal1gT/AQ8AEA5o1sRWB3u41uNWg9l6t1j12ih4B/sYib6ToAAAAAzCHkAwAAAA5DyAcAAAAchpAPAAAAOAwhHwAAAHAYQj4AAADgMIR8AAAAwGEI+QAAAIDDEPIBAAAAhyHkAwAAAA5DyAcAAAAchpAPAAAAOAwhHwAAAHAYQj4AAADgMIR8AAAAwGEI+QAAAIDDEPIBAAAAhyHkAwAAAA5DyAcAAAAchpAPAAAAOAwhHwAAAHAYQj4AAADgMIR8AAAAwGEI+QAAAIDDEPIBAAAAh0mwugAAAAAgntTWSV+VSgdLG7b99SOpTxdpYIrUq7NlpdUj5AMAAAAmlFdJeZ9LW/ZKZyqb7sv7vOHv/btJVw+Vxg6W3K7Y1uhHyAcAAADC2FUs/WWrdLYy/LEHT0ivbDbeDMyeIHXvGP36AjEnHwAAAAhh3W7pf/LMBfzGCo9JT66WDhyPTl2hEPIvUj6f9PEBqc5r7vjaOuN4q3192nh3bFbB19LpiujVAwDRdrZS+rzE/PGHT0qHTkavHrO2fyXV1Jk71uuVPjpgvDZZ6fhZaf8x88cXHpVKy6JXjxk+n/HYeU2+ntfUSduLolqS42zeK6385Py/vqJGen6ddORM5Goyg5B/kXpnl/TSRulPG8MH/do66Y8fGMev/Sw29QVz/Kz09Brp2bXmgv7uQ9Lz66Wn35XOVUW/PgCItMoa6Zk10h82SDsPhj/+8EnpmbXS79ZKR2McKBrL+1xa8oH04nvhg77Xa0xr+NNGadWO2NQXzOmKb15j1hnhPZx9R6Tn1hlfc8bCwaQ3thuP3dIt4YN+TZ20OE9a8r70/hcxKS/uHT8rrcgPfcxTdxm3UCpqjN9zs2/GIsHWId/r9WrRokVKT09XcnKyRowYoby8PA0dOlTz5s2zury4NrS3lJxovJsPFfT9AX9nsdSujZTRO7Z1NtalnTQ4RTpXHT7o7z4kLX7P+Hdd2ltq2yZ2dQJApCQlSJf1MZ7LlnwQOuj7A355lTTwEqlb+9jVGSi9p9Q+Sdp9OHTQ9wf8/ANSm2/+rVbpmCSl9ZCqa6Xn1ocO+vuOGINI1XVSWk+pQ1Ls6gw0rI/x2H24P3TQ9wf8z0uMn01az9jWGa9ezzf/iVQ4Xx03PhWIFVuH/Llz5yonJ0fz58/X6tWrNWvWLM2ePVuFhYUaM2aM1eXFtUEp0n3XhA76gQE/+1pjtbhVEjzSPVdJw/uFDvqNA/7VGdItYyWXRSvbAeBCuFzSt0dJ0y4LHfQbB/xhfaR7JxvPmVbp01VacG3ooB8Y8O+bJqX2sKRcSZLbLd05QRo7KHTQbxzwx6VKs680vtYqQ3pK86eGDvqBAf+B66TeXayoNr4cOSPtORzZc773Reympdk25C9dulRLlizRypUr9fDDD2vatGl65JFHNGHCBNXW1mr06NFWlxj3ggV9P7sFfL9wQZ+AD8BpwgV9uwV8v3BB304B3y9c0LdbwPcLFvT9CPjn78PCyJ/zyBmjv34s2OBXM7jc3FxNnz5dU6ZMabI9LS1NiYmJysrK0smTJ3XTTTcpIyNDI0aM0PXXX6+9e2P4OYgDBAZ9PzsGfL+Wgj4BH4BTtRT07Rrw/YIFfT+7BXy/loK+XQO+X2DQ9yPgn7+votQRJ1rnDWSjX88GxcXF2rVrl26//fZm+4qKipSZmamkpCS5XC49+OCDKigo0I4dO3TTTTdpzpw5FlQc3xoHfT+7Bny/wKD/9LtGaysCPgCnCgz6L74v/fYd+wZ8v8Cg72fHgO8XGPSfXWfc7Brw/RoHfT8C/vmLVpeqWHW/cvl8Vjesam7Lli2aMGGC3nzzTc2cObN+e0VFhYYMGaIZM2Zo8eLFzb4uPz9fN998s4qLi8N+DxcJsJne6RM16z+NOTt1NVV6LecqHS0Ms6TcYm5Pom59ZIP6ZEyUJH2x+VW99cxsi6sCgOj61rwlGjb5HknSkcJ8LfvFJNXVVltcVWgpA0bou49tUUJisiTp9V9eo+I96y2uKjSXy63v/HiVBmbdIEnav32V/vHrf5LPF8MWKeehf+a1uuXf10iSaqsr9Zf/vELHD+60uKr484M/1sjtaXjHFK6DTksefLnp/b0frtCbv731vOsyG91t+D5USklJkSQVFBQ02b5w4UKVlJS0uOj2qaee0s033xzt8hzJ7UnU6Bsfrr/vSUzSmBt/LJfbhsNCjfTPvFY9Bjf8Pgwcfr26DxplYUUAEF0p/Ydr8KgbG+4PyNLArOkWVhSey+XW6Jk/qg/4kjT6xh/Jk2hhWxoTemdMUp+Mq+rv9710snqnT7CwovA8iUkaPfNH9fcT2iRr1MwfyeWyZeSzNW9dbXTO643OeQPZciTf6/Vq1KhRKikp0aJFi9S3b18tX75cq1atUlFRkbZs2aIrr7yyydc89thjWr16tdatW6d27dpZVHl8Clxke/MYoydsZY00coB09yTJY8PnhsZz8Buz8zQjALgQjefgN+ZxS9+/Shre35q6QgnsonPbWOnvnzRMM5ozWUq04XhS4zn4jdl5mlHgItvvjJKW5xtTjsYNlmaPt+c0I7v6rzeMi3CG4x/hDxyxb8l1mdJNI8+7LNNs+aN2u91atmyZMjMzlZ2drTlz5iglJUULFiyQx+NRVlZWk+Mff/xxvfHGG3rrrbcI+K0UrIvOFanh22taLXCRrV+49poAEK8CF9n6hWuvaaVgbTKvGBK+vabVAhfZ+oVrr2mlYF10rhgSvr0mWtYvSoOFsRqEtGXIl6SMjAytX79e5eXlKioqUk5Ojnbu3Klhw4apbdu29cc99thj+sc//qF3331XXbp0sa7gOBSqTaaZPvpWCdZFx89MH30AiDfBuuj4memjb4VQffDN9NG3SrAuOn5m+uhbIVSbTDN99BHc5X0jf85Ej3GxuFiwbcgPJj8/v8l8/M8++0w///nPVVpaqqlTp2rkyJEaOXKkdQXGETN98O0Y9MO1yTR7wSwAiBfh2mSavWBWLJm50JUdg364NplmL5gVS2b64BP0z8/w/lKntuGPa40xg6R2MVqKEjchv6ysTAUFBU0ugpWZmSmfz6e9e/dq+/bt9TeE9/dPzLXJDAz6b2yPaZlNHDljrg9+sKAfOH8VAOJBZY30u3Xh22QGC/qHY9SmL5i3dprrgx8Y9FdY2NDt1Dnp+Q3h22QGBv3n10unz8W62gavf2iuTWZg0H97VyyrjE8etzQjK/xxZiV6jPn4sZIQ/hB76NChg+rqbPJZngNcc5lxMYbbrwg/N8wf9FfkS1Mvi019wfToaNRdWRO+D74/6L+0Ubq0t/HkBwDxJjlR+qeR0qcHpTlXh+6D7w/6kuTzWdsT/eqh0hdfGws/wy1Q9Qf9pVtiG4ACdWknXX+5MaAUrg++P+jLJfXpInW2cDngdZlG3/U7J4T/mfuD/srtTdezoWXjhxiDnF+UXPi5vj1KSul44ecxy5bddRAbPl/rLhjV2uOjwf/bGliHf0V7YA9bO9QMABcq2HNZqOc9yfrnvnh8jWmpDru/xsTrYx0vyquMi26WmOi005KJ6dLt42L7uMfNdB1EXmt/0ezwhOByta4OO9QMABeqtc97dnjui8fXGCk+X2Pi9bGOF+2TpAXXnd+CWZekb2VKt8U44EtxNF0HAAAAsEKHZGMN48YCafWnxpq/cHp3kWZdIQ3uHvXygiLkAwAAAGG4XcZ6kyu/maf/6UGp+ISxaFsyRup7dZIGpEhXDDbWo1j5qQkhHwAAADCpTYJx4dArvrlQWnWt0dWqTYLRkccuCPkAAADAeWpj0zRto/cbAAAAACKBkA8AAAA4DCEfAAAAcBhCPgAAAOAwhHwAAADAYQj5AAAAgMMQ8gEAAACHIeQDAAAADkPIBwAAAByGkA8AAAA4DCEfAAAAcBhCPgAAAOAwhHwAAADAYQj5AAAAgMMQ8gEAAACHIeQDAAAADpNgdQF2tyJfOnTSmu/dt6t0y1hrvjcAAADiFyE/jEMnpX1Hra4CAAAAMI/pOgAAAIDDEPIBAAAAhyHkAwAAAA5DyAcAAAAchpAPAAAAOAwhHwAAAHAYQj7iitcn1XnNH19bF71aWqO1ddilbsBp4vX/Ymvq8HqNG1rPdx6vMT5f9OoBLgQhH3HD65P+slX600ZzT8JVNdLv1kpv7Yx+baHsPyb98h/SwRPmjs/fLz2xSjpdEd26gIvN2Urp129JW/aaO/7wSSn3H9K+I9GtK5w1n0n/vUaqrAl/rNcrvbJZenkzQb+1fD7pbx9Li/PMvamqqZP+J09a+QlBH/ZEyEfcKD0r7SiStheFD/pVNdLz66XCY9LmL6XyqtjVGWjjl9LJcunZteGDfv5+6eVN0pEz0s6DsakPuFjsPiSVnJJe3Ro+6B8+KT2zVjpRLr1fEJPygqqsMZ5DvjouPbsudND3B/z8A9LOYuno2ZiV6QinK4zn4N2HpRfeCx30a+qMNwOfl0jbCqUzDMrAhmwd8r1erxYtWqT09HQlJydrxIgRysvL09ChQzVv3jyrywtq+eNTte1vj5veDvO6d5Luu0ZKTgwd9BsH/M5tpQe+JbVPin29fndcKQ3vJ52rDh30/QHfJ2lmlnRVRkzLBBzvyiHSt0cZfw8V9P0Bv7xKGtZHumti7GoMlJwoPXCd1LV96KDfOOC3SZDumyb16hzzcuNal3bSgmuN14tQQb9xwG+fZPx8OreLfb1AOLYO+XPnzlVOTo7mz5+v1atXa9asWZo9e7YKCws1ZswYq8uDBQalhA76wQJ+947W1StJCR7pnqtCB/3AgH/9cEtKBRzvmmGhg35gwJ8zWUr0xL7Oxi7pEDroBwv4qT0sKzeu9ekaOugHC/i9u1hWLhCSbUP+0qVLtWTJEq1cuVIPP/ywpk2bpkceeUQTJkxQbW2tRo8ebXWJsEiwoO9nt4DvFyroE/CB2Gop6Nsx4PsFC/p+BPzIChb0/Qj4iCe2Dfm5ubmaPn26pkyZ0mR7WlqaEhMTlZWVJUm6+eablZWVpVGjRumKK67QmjVrrCgXMRYY9P3sGPD9ggX9t3cS8AErBAb9tz61b8D3Cwz6fgT8yAsM+n4EfMQTl89nvzXhxcXF6t+/vxYvXqx77723yb7Zs2fr888/1yeffCJJOnXqlLp06SJJ+uSTTzR16lSdOHFCHk/oZ2eXy2WqllsfWa9+l001Xfvyx6fq631b5UlsOgm8prJM42/5ua64+T9Mn6t4zwa9/stppo+/GPUacqVu/r9vK6mdMfn07Ilivf7LqTp9ZJ/FlbXM7UnUjB/8RWlj/7l+26Zl/6EP//5LC6sCLk6jZ/5IV9+5qP7+/u1v6s3f3qq6GgtX64fRMWWgbntkgzp1HyRJqq4s098XTtfhgo2hvxCtltJ/uG756Tq17ZgiSTp35phW5E5TafFnFleGi5nZ6G7Lkfzi4mJJUq9evZpsr6ioUF5eXpOpOv6AL0mnT5+Wy+Uy/Y+Pliu+84iyf3+qya1PxlWW1uRUpcW7dPpoYf3940U7dObYAesKMsFbV6N9H/2t/n5N9Tkd2LHKuoKAi1jRzndUXVlWf7/w43/YOuBLUlnpQR098HH9/bPHD+j4wU8trMi5Tn5doBOHP2+4f3iPTn39pYUVAeYlWF1AMCkpxjvmgoICzZw5s377woULVVJS0mzR7YIFC7R69WqdPn1ar7/+uhISwv+zzL4R+O93pX1HW1F8BE2ZMlXLH7fdBy220XiRbfskY3HU4JE36oUNtbp7kuSx5VvYpnPwJSmxTTv9y8KPlX2t1L+bpaUBF5XGc/D9rr33Of3h+ec0Ps26ukJpvMg20WNMWVS/y/Vffz2j7G+mMCIyGi+ybfvN49r30sn63TtVuneyMQUTsDNbxqDU1FRlZWUpNzdXL730ktauXavs7Gy98MILktQs5D/zzDMqLCzUihUr9OMf/1hlZWXBTgsHCeyi8+ANUva14dtrWi0w4Evm2msCiKzARbaNmemjb4XALjrZ1xjPfeHaa6L1Arvo/Ov10g++Fb69JmAntgz5brdby5YtU2ZmprKzszVnzhylpKRowYIF8ng89YtuA02ZMkVut1sbNzIv0claapMZrr2m1QK76PiFa68JILKCddHxM9NH3wottckM114TrddSm8xw7TUBu7HlwtuW3H333dqxY4c+/dSYe1hWVqbS0lINHDhQkrHw9pprrtGOHTs0YMCAiHxPK6frDOlhjByggZk++AeOS89980I3coBsMXUnWJvMB1829j11l/FC8ccPjKtUtmsjpu4AUdJSm8zG/x/X7ZZWGr0ddMeVsnzqjpk++KVl0tNrjKtrD0wRU3fOk5k++IG/Q0zdgV3ZciS/Jfn5+U2m6pSXl+u73/2uLr/8co0cOVLZ2dn685//HLGAD3sxe6Eru43om+mDb+aCWQAujNk++OEumBVLZi90xYj+hTN7oStG9BEv4ibkl5WVqaCgoElnnZ49e2rLli3atWuXtm/fri1btujGG2+0sEpEU0WNdLrCXB/8xkH/RLnx5G2VI6fN9cFvHPQra4wROQCRc+qc8X/LTB/8xkH/yJnY1BdMjdcYpTfTB79x0D9zTjpn7yZBtlNVY/yOmOmD3zjonyyXqmpjViZgWlxN17EC03Xs5WS5VOs1f6Gr4hNStw7GFBir+HzS3qNSes+m2xtPD2istk4qKuWiNkA07D8m9evWPOC39P/xyyNSWg/J5KVVoqKyRjp6RhpwibnjS7/pPXFJh+jV5FRnK6WySvMXuio5JXVMljokR7Mq4PzYsoUm0JKu7Vt3fD8bzGt3uZoH/FASPAR8IFoGd2/d8a35vxstyYnmA75EuL8QHZONm1lc9RZ2FjfTdQAAAACYQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhaKEZRt+uF+f3BgAAQPwi5Idxy1irKwAAAABah+k6AAAAgMMQ8gEAAACHIeQDAAAADkPIBwAAAByGkA8AAAA4DCEfAAAAcBhCPgAAAOAwhHwAAADAYQj5AAAAgMMQ8gEAAACHIeQDAAAADkPIBwAAAByGkA8AAAA4DCEfAAAAcBhCPgAAAOAwhHwAAADAYQj5AAAAgMMQ8gEAAACHIeQDAAAADkPIBwAAAByGkA8AAAA4DCEfiLLaOmn9HqnOa+74skppY0F0azJj9yHp4Anzx2/ZK52uiF49sJezldKmL80ff/iktPNg9Ooxa/Ne6YzJ31Ov1/i/W1MX3ZoAIBoSrC4AcLpXt0j5B6Svjkt3T5I8Id5al1VKz6yVSk5JPklXZcSoyAAHjkuL35OSEqTsa6X+3UIfv263tPITqUcn6f/MlBI8sakT1qjzSr/75ve0rEq6/vLQxx8+afxeV1RLC66ThvSISZnNbNkn/WWr8Xv6wHVSp7YtH+v1Sq9sNv7vHjguzbk6ZmUCQETYeiTf6/Vq0aJFSk9PV3JyskaMGKG8vDwNHTpU8+bNs7o8wJSrhkrJidL2IulPG1se0W8c8Ht0krL6x7TMJvp1lYb1kc5VS8+uDT2i7w/4knTNZQT8i4HHbfysXZJW7ZDe2dXysf6AX14lXdpbGnhJzMps5vK+Uu8u0tEz0tNrWh7Rbxzw2yRIU4bGskoAiAxbh/y5c+cqJydH8+fP1+rVqzVr1izNnj1bhYWFGjNmjNXlAaYMSpHuuyZ00A8M+OFGGaMtwSPdc5U0vF/ooN844N9xpTQ+LbZ1wjrjUqU7J4QO+o0D/rA+0r2TrX0T2CFZWnBt6KAfGPDvmyalWvTJAwBcCJfP5/NZXUQwS5cu1Z133qkNGzZoypQp9dtvvfVWrVixQtu2bdO4ceMsrBBonQPHpefWSZU10sgBRuCXpMdvtVfAb6y2TvrjB9LOYqldm6ZTdwj4kKQPC41Q7JM0c0TD1B27BfzGgr2p/tkKY9/YQQR8AM5g25H83NxcTZ8+vUnAl6S0tDQlJiYqKyuryfbf//73crlcWr58eSzLBEwLHNH3s2vAl1oe0Sfgwy/YiL6dA74UfETfj4APwClsGfKLi4u1a9cu3X777c32FRUVKTMzU0lJSfXbvvzyS7344osaP358LMsEWq1x0Peza8D3Cwz6/+8dAj6aCgz6v3nbvgHfLzDo+xHwATiFLbvrFBcXS5J69erVZHtFRYXy8vI0Y8aM+m21tbW699579eyzz+rBBx80/T1cLldEagXOx4Dh1+uf/+/bkqSqc2eU+4PL9MjJwxZXFZrbk6jZj3+klP7DJUlbVzym337v59YWBVsZ9+1/18RZuaqpk06UfKH7v5+l+bXVVpcVUrtOPXT3E58ruX1XSdLyX31bT9zxD4urAoCWmZ1pb8uR/JSUFElSQUHTZuELFy5USUlJk0W3OTk5mjFjhkaOHBnLEoHz1rZjiq6e/UT9/aR2nTT5e7+Ry23D4c5GRt7wr/UBX5JGXP8DdR80ysKKYCcp/Ydr1IyH6u936z1Uo2c+bGFF4blcbl1156L6gC9JV93xK7Xr3NPCqgAgMmy58Nbr9WrUqFEqKSnRokWL1LdvXy1fvlyrVq1SUVGRtmzZoiuvvFJbt27Vww8/rA0bNsjj8Wjq1Kl64IEHdNttt1n9TwCCClzw953RRrcd/2LccH30rdJ4Dn5jgYtxcXFqPAffz6Xmi3HtJLCLzv+aJL25w/7T5wDALBvGCcntdmvZsmXKzMxUdna25syZo5SUFC1YsEAej6d+0e369eu1b98+DRkyRIMGDdKWLVt0//3369e//rXF/wKguWAdPTL7hm+vabXARbZ+4dpr4uIQuMjWL1x7TSsFa5N5eb/w7TUBIJ7YciS/JXfffbd27NihTz/9NOh+RvJhV+H64Ae217TLiH6wLjoPvmzcX3RHy+01cXEI1kXn4VeNfU/d1XJ7TSuF64Nvt2tWAMD5skGMMC8/P5+LYCHumAkNZi6YFWvh2mSavWAWnMlMm0wzF8yKJTMXujJzwSwAiAdxE/LLyspUUFCg0aNHt3jMhg0bGMWH7fxlq7lRwcCgv2FPTMtsYt9Rc20yA4P+4jzjAlpwtjqvtPg9c20yA4P+FyUxLbWJ9wvM9cEPDPqvbI5llQAQGbZsoRlMhw4dVFdHekD8uWWs5PVJ370y/Mf+/qC/YY80+dLY1BdManfpW5nSJR3C98H3B/2lW6SJafbsiY7I8ril702U3vtCumtC+J/5uFTjz8OnpIxeIQ+NqknpUlGp8We4Pvj+oL90i/F/GADiTVzNyQdgPf+c/KfusrYO2BO/HwBgD3EzXQcAAACAOYR8AAAAwGEI+QAAAIDDEPIBAAAAhyHkAwAAAA5DyAcAAAAchpAPAAAAOAwhHwAAAHAYQj4AAADgMIR8AAAAwGEI+QAAAIDDEPIBAAAAhyHkAwAAAA5DyAcAAAAchpAPAAAAOAwhHwAAAHAYQj4AAADgMIR8AAAAwGEI+QAAAIDDEPIBAAAAhyHkAwAAAA5DyAcAAAAchpAPAAAAOAwhHwAAAHAYQj4AAADgMAlWFwAAaKqmTjpyWqqoltxuKaWD1Lmd1VUBAOIJIR8AbKCyRvpov7S1UCo+IXl9Tfd3SpaG9ZWuypD6dbOmRgBA/CDkA4CFfD7powPSinzpXHXLx52plLbsM24j+ku3XSF1TI5ZmQCAOEPIBwCL1NZJS7cYIb81dhyU9h6V/mWKNLh7VEoDAMQ5Ft4CCKqqRqrzmj8+1Cg0mqvzSi9tbH3A9yuvkp5dJx04HtGyWqU1P3Ov15iSBACIDUI+gGYqa6Tn1kl/2mgu6JeWSU+skt76NPq1OcX6PdKnB0Mf89Rdxq0l1bXSkveNBbqxtuYz6VdvSMfOhj/W65Ve2Sz9bi1vBgEgVgj5AJo5flYqOS1tLwof9EvLpKfXSCfLpT0lxhQUu6mskc5WtO6TiWg6ckZaHaE3RKfOSSs/icy5zKrzSrsPSacrpKffDR30/QE//4D09WnjdwsAEH22Dvler1eLFi1Senq6kpOTNWLECOXl5Wno0KGaN2+e1eUBjtWvm3TfNVJyYuig3zjgD0yRsq+REjyxr7clew5Lz6yRfvKa9OgK6ZHl0l8/MsKplTbsiewbjq37pNPnIne+cDxuaf40KbV76KDfOOC3SZDumyYNuCR2dQLAxczWIX/u3LnKycnR/PnztXr1as2aNUuzZ89WYWGhxowZY3V5gKMNSgkd9IMF/ORE6+oNlPe59Px6Y4GqX2WNsf3J1Ub9VqiskfL3R/acXp+0eV9kzxlOUmLooB8s4Kf2iG2NAHAxs23IX7p0qZYsWaKVK1fq4Ycf1rRp0/TII49owoQJqq2t1ejRo60uEXC8YEHfz84Bv/iEMWIvGS0qA52pkP68KbY1+e0/ZlzsKtK+/Dry5wwnWND3I+ADgLVsG/Jzc3M1ffp0TZkypcn2tLQ0JSYmKisrS5I0depUDR48WCNHjtTIkSP1k5/8xIpyAccKDPp+dg34kvRBgeQKsd8nI2wfOhmrihoUn4jeeQMvoBULgUHfj4APANayZZ/84uJi7dq1Sz/84Q+b7SsqKlJmZqaSkpLqtz3xxBO67bbbWvU9XK5QEQBAoF5DrtQ//+QdtWnbSZJU8uVmPfu/b9BDFfZbSfn93xSqc/fBYY+7afa/afvb/y8GFTWY9v1nlHXd/U22heqgE2r/gy83/L2qVmrboYuqz52+wArPT2JSe33nx6vU99LJkqTqqnIt+8UNeqJgY5ivBAC0hi/YR9RB2HIkv7i4WJLUq1evJtsrKiqUl5fHVB3AAuWnv1ZNZXnD/VOHVVMVw9WereB2m1v96zJ5XGRFb4DBFcVzh1NbXaGzJw413K8qV/lpC+YQAQAk2XQkPyUlRZJUUFCgmTNn1m9fuHChSkpKmi26feSRR/TYY48pNTVVOTk59VN5QjH7LghA00W2vTpLJ89JaeNu1QsbanX3JKPbip28+J70aXHw+fiNvfbik0rr+WRsivrG6k+lt3c23dZ4RL4x/wh+S/sbS3BL5WdPWvKzaLzINtEjde8oHVYP/dvv9uqBbxn3AQCxZcuQn5qaqqysLOXm5qpbt27q27evli9frlWrVklSk5D/0ksvqX///nK5XHr11Vd1ww03aO/evWrfvr1V5QOOEqyLztenjYtl+efo2y3oT8qQdoS40JTLZQTPIRbMFe/XNTrn7dPVmp9BsC46fbsanY0KjxmLcQn6ABB7NnpZbuB2u7Vs2TJlZmYqOztbc+bMUUpKihYsWCCPx9NkpH7AgAH18+vvuOMOtWnTRl988YVVpQOO0lKbzHDtNa2W3lO6KiP4PpfLGPX+3kTj77E2qLvkjsL3teINS0ttMsO11wQARJ8tQ74kZWRkaP369SovL1dRUZFycnK0c+dODRs2TG3btpUkVVZW6vjx4/Vfs3btWp09e1ZpaWlWlQ04Rrg++HYO+i6XdOtY6Z/HSF3aNd13aW/pwRusuyhTx2RpeP/In3d8jJ/2wvXBJ+gDgLVsOV2nJfn5+Ro/fnz9/TNnzmjGjBmqrq6W2+1Wp06dtHLlSnXq1MnCKoH4Z/ZCV/6gb8epOy6XNOVS6eoM6aGlxrb/vFnqaoOZfFMvlXYUhT/OrMv7ST1j+LRn9kJX/qDP1B0AiL24CfllZWUqKCjQ/fc3tJ7r0aOHPvroIwurApzJ7TJuZvrgNw76Hnc0e8ecH3ejNxx2CPiSNLi7dPVQ6f0IzCxMTpRuG3fh52kVl/G4mumD3zjonyyPzlQlAEBzLh9tZgAEceqcESDNXujqyBmpe4emodou/N1pwvWjj6WqWumZNVJR6fmfwyXp+1dLIwZErCzTvD7p2BmpZ2dzx1fVSOeq7fNGCwCczoYvxwDsoEu71l3JtmcnewZ8u0pKMEa4B6ac39d7XNL3JlkT8CVjRN5swJeMEX0CPgDEDi/JAGCR9knSD66Trr+8ddNY+naVHpohjRkUtdIAAHEububkA4ATJXikmSOksYOljV9K2/ZJFTXBj03tbrQGHTHAHoubAQD2RcgHABvo0clo+fmdUdLRs9KhE9KfNhn77r9W6tdNatfG2hoBAPGDsSAAsBG3W+rVWRozuGFbRi8CPgCgdQj5AAAAgMMQ8gEAAACHIeQDAAAADkPIBwAAAByGkA8AAAA4DCEfAAAAcBhCPgAAAOAwhHwAAADAYQj5AAAAgMMQ8gEAAACHIeQDAAAADkPIBwAAAByGkA8AAAA4DCEfAAAAcBhCPgAAAOAwhHwAAADAYQj5AAAAgMMQ8gEAAACHIeQDAAAADkPIBwAAAByGkA8AAAA4TILVBQBANBw9I312SDpY2rDt6TVSny7SoBTp8n5SG54BAQAOxUscAEc5cFxavUP64uvm+/YeMW7vfSG1bSNNSJOuv1xKTox9nQAARBMhH4Aj1HmlN3dI63dLPhPHV1RL63ZLn3wl3TVBSusZ9RIBAIgZ5uQDiHt1XunF943QbibgN3ayXHp2rbTzYFRKAwDAEoR8AHFv+YfSruLz//o6n7TkA6moNPyxAADEA0I+gLi2+5C0eW/oY566y7iFUueVXtks1dRFrjYAAKxi65Dv9Xq1aNEipaenKzk5WSNGjFBeXp6GDh2qefPmWV0eAIt5fdKK/Mid7+vT0saCyJ3vfJ06J729s+H+7kOS12tdPQCA+GPrhbdz587VihUr9Oijj2rMmDHatGmTZs+erWPHjumhhx6yujwAFvuiRDpeFtlzbvxSmnyp5HZF9rxm+HzSWzuld3YZf/f7/Qape0dp/jQppWPs6wIAxB/bhvylS5dqyZIl2rBhg6ZMmSJJmjZtmj7++GOtWLFCo0ePtrhCAFb76EDkz3nsrNFbf2BK5M8dzvo9TUfwGzteZvT5/z8zpXZJsa0LABB/bDtdJzc3V9OnT68P+H5paWlKTExUVlaWJKm6uloPPfSQ0tPTNXz4cE2ePNmKcgFYIFoLZQ+eiM55Q6muld7e1fJ+n8+YxrO1MHY1AQDily1H8ouLi7Vr1y798Ic/bLavqKhImZmZSkoyhrJ++tOf6uzZs/r888/l8XhUUlIS63IBWKDOKx07E51zl5yKznlD+eyQVFUT/rit+6Rpl0W/HgBAfLNtyJekXr16NdleUVGhvLw8zZgxQ5J07tw5Pf/88zp48KA8Ho8kqXfv3qa+h8tlwYRbABGTkNROCxaXN9kWroNOS/sffLnp/T8sflGzrrz3AqprvRHfekBT7/nvsMftLz4ml6tHDCoCANiRz2fuijC2nK6TkmJMhi0oaNrmYuHChSopKdGYMWMkSXv37lXnzp315JNP6oorrtD48eP12muvxbxeALHnra2WZP7JrjVqqysjfs5wKsqOhz3G5/Oq4mz44wAAsOVIfmpqqrKyspSbm6tu3bqpb9++Wr58uVatWiVJ9SG/trZWhw4dUu/evbVt2zYdOHBAEydOVHp6ukaNGhXye0QjGACIrV+ulI6dbfhULnBE3s8/gt/S/kA//0m21r2YfYHVtU5ljfSzFcbc/Ja4XG7dPeMyvfRjnr8AAKHZciTf7XZr2bJlyszMVHZ2tubMmaOUlBQtWLBAHo+nftHtgAEDJEn33HOPJGnQoEGaNGmStm3bZlntAGKnf7f4Om8oyYnSNSHm2rtcUodkaUJa7GoCAMQvW4Z8ScrIyND69etVXl6uoqIi5eTkaOfOnRo2bJjatm0ryZjWM336dL355puSpNLSUm3btk0jRoywsnQAMTJqYOTP2bW9NPCSyJ/XjOuHS5OHNtx3yQj3ktS5rbTgWiPoAwAQji2n67QkPz9f48ePb7Ltueee09y5c/WLX/xCPp9PP/nJT5odA8CZhvWVuraTTp6L3DknpUtui4Y/3C7plrFGDZv3Gr3xEz3S5f2kEf2lBI81dQEA4k/chPyysjIVFBTo/vvvb7J94MCBWrNmjUVVAbCSxy3dPEZ68f3InC+lg3T10PDHRVvPzsa/CwCA8+XysQIVQJz708YLv/qt2yUtuE4aQndKAIAD2HZOPgCYdcd4KaNX+ONa4pJ05wQCPgDAORjJB+AINXXSX/OlTXtb93Udk6XZ4435/QAAOAUhH4CjfFEirdohfVUa+rhEjzRusHTjSKl9UkxKAwAgZgj5ABzpYKm065Dx5/Eyqc4rtU2U+nSVBqVIIwdI7Qj3AACHIuQDAAAADsPCWwAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADgMIR8AAABwGEI+AAAA4DCEfAAAAMBhCPkAAACAwxDyAQAAAIch5AMAAAAOQ8gHAAAAHIaQDwAAADjM/w94Uf7+vguwNAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 989.597x445.48 with 1 Axes>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "basic_circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:58.643611Z",
     "start_time": "2019-12-10T21:47:58.241545Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAegAAAFeCAYAAABOw4xkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAzu0lEQVR4nO3de3xU9Z3/8dfMJCRAuAe5XwwkSCIJELl6CagoUFtpESq21kW20IC7lf78/eyjbO26sfz6o1jdrdXaXZW6Vawgq6jEKpAEFTFGEIkXAgQI0YAQbklIQpKZ3x+nE5KQzExgZs534P18POYBc+bkzIfhZN7n+z3f7zkOj8fjQURERIzitLsAEREROZ8CWkRExEAKaBEREQMpoEVERAykgBYRETGQAlpERMRACmgREREDKaBFREQMpIAWERExkAJaRETEQApoERERAymgRUREDKSAFhERMZACWkRExEAKaBEREQMpoEVERAykgBYRETGQAlpERMRACmgREREDKaBFREQMpIAWERExkAJaRETEQApoERERAymgRUREDKSAFhERMZACWkRExEAKaBEREQMpoEVERAykgBYRETGQAlpERMRACmgREREDKaBFREQMpIAWERExkAJaRETEQAroIKiqha9PBL7+kVNwqjp09VzKTlTB0YrA1y89DmfOhq4eEZFQUUBfpDO18NQmeGIjHDruf/0jp6x1n3gHTiuk2+XkmXOfXSAhfeCYtf4fN0NNXejrExEJJgX0ReoQBT06W620pzb5DmlvOFfUWD8TGx2+Oi8FHaOhW0er98FfSB84di6Ye3aGaFf46hQRCQajA9rtdrNy5UoSExOJjY0lLS2NvLw8RowYwcKFC+0uD4AoF9xzHYwa6Dukm4ZzUl/4xwwr3CVwMdGwaCok9PYd0k3DefRguPtacBm9p4uInM/or60FCxaQlZXFokWLyM7OZu7cucybN4/i4mLS09PtLq+Rv5BWOAePv5BWOIvIpcLh8Xg8dhfRmtWrV3PXXXeRm5tLRkZG4/LZs2ezbt068vPzGTdunI0Vnq++Af78HuwqhU4dIPMm6OBSOIdCbR08nQPFR61u7/umWYP1FM4icqkwNqBHjRrFwIEDyc7Obrb8wQcf5LHHHqOiooKYmBgOHDjAPffcQ1lZGTExMTz55JNcf/31NlXdPKRjo8HpsFrVCufg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ROTyY+Q5aLfbzZgxYygrK2PlypUMGDCAtWvXsmHDBkpKSti2bRsTJkwArC7vQYMG4XA4eOmll1i6dCl79+6lc+fOYa+75Wjtk2es5fFdmg8cMy2kW47WnpbSfODYDyejkBYRCTMju7idTidr1qwhJSWFzMxM5s+fT3x8PEuWLMHlcjVrIQ8ePLjxfPKdd95Jhw4d2L17d9hrbm0qlVcg86Tt0tpUqkCmYImISGgZ2cUNkJSURE5OTrNld999N8nJyXTs2BGAmpoaKisrG7vEN23aREVFBcOHDw9rrf7mOXvnST+x8VxIm9CS9jXP2RvSYLWk/7LV+rta0iIi4WFsQLemoKCAiRMnNj4/ffo0M2bM4OzZszidTrp27cr69evp2rVr2GoK9CIkpoV0IBchUUiLiNgnYgK6srKSoqIiFi9e3Ljsiiuu4OOPP7axKivEXM7A5jk3DWmnw/pZu7iczbuy29I0pDd+Zv2ciIiEnpGDxCLN2Xrrxhe94povv/8F68/Hf9B8+ckz0CEKOnUIT31tOXwK+nYLbF2PB46cDnx9ERG5OBHTgjZZh6jzw9kXO2+S0VR7wtbhUDiLiISTOixFREQMpIAWERExkAJaRETEQApoERERAymgRUREDKSAFhERMZACWkRExEAKaBEREQMpoEVERAykgBYRETGQAlpERMRACmgREREDKaBFREQMpIAWERExkAJaRETEQApoERERAymgRUREDKSAFhERMZACWkRExEAKaBEREQMpoEVERAykgBYRETGQAlpERMRACmgREREDKaBFREQMpIAWERExkAJaRETEQApoERERAymgRUREDKSADoL9R+H9osDXL9gPX5aFrh4REYl8UXYXEOkqauDpHKipA7cHrh/he/2PiuHFDyDKBT+/DXrFhadOERGJLEa3oN1uNytXriQxMZHY2FjS0tLIy8tjxIgRLFy40O7yAOgSC99Ks/7+SgG8u7vtdb3h7AGmXa1wFhGRthndgl6wYAHr1q3jl7/8Jenp6WzdupV58+Zx9OhRfvazn9ldXiNvq/mVAuvRdJlX03CemQa3XB3WEkVEJMIYG9CrV69m1apV5ObmkpGRAcDUqVPZvn0769atY+zYsTZX2FxrIe2lcBYRkfZyeDwej91FtGbUqFEMHDiQ7OzsZssffPBBHnvsMSoqKoiJieHs2bP8/Oc/5/XXXyc2NpYePXqwZcsWm6q2urhbBrQDhbOIiLSPkS3o0tJSCgsLWbp06XmvlZSUkJKSQkxMDAC/+MUvqKio4Msvv8TlclFWZu/w6KYtaS+Fs4iItJexAQ3Qt2/fZsurq6vJy8tjxowZAJw5c4ann36aQ4cO4XK5AOjXr19A7+FwOIJY8fmmLVxF8g33AFC8/XVu/eF3Qvp+IiISGQLtuDZyFHd8fDwARUXNJxevWLGCsrIy0tPTAdi7dy/dunXjd7/7HePHj2fixIm8/PLLYa+3pauu/SEjr7u78XnC2G+TOm2JjRWJiEikMbIFnZCQQGpqKsuXL6dnz54MGDCAtWvXsmHDBoDGgK6vr+err76iX79+5Ofnc+DAASZPnkxiYiJjxozx+R6hOvXeckBYx2iru3vqPU/wxO+f8DtPWkREBAxtQTudTtasWUNKSgqZmZnMnz+f+Ph4lixZgsvlIjU1FYDBgwcDcM89Vlfy0KFDufbaa8nPz7el7tZGa18/AmZfY73ub560iIiIl5EBDZCUlEROTg5VVVWUlJSQlZXFrl27SE5OpmPHjoDVFT59+nTefPNNAMrLy8nPzyctLS3s9fqaSqWQFhGR9jJ2mlVrRo4cycSJE3nuuecalx08eJAFCxZw5MgRPB4PS5YsITMzM6x1BTrPuekUrNnX+L8sqIiIXL6MPAfdmsrKSoqKili8eHGz5UOGDGHjxo02VWVdi3vNR4FNpWo6BevV7ZA8QJf7FBGR1kVUC9pUu8vg0HG4OSWw9d8rgq4dIXVQaOsSEZHIpYAWERExkLGDxERERC5nCmgREREDKaBFREQMpIAWERExkAJaRETEQApoERERAymgRUREDKSAFhERMZACWkRExEAKaBEREQMpoEVERAykgBYRETGQAlpERMRACmgREREDKaBFREQMpIAWERExkAJaRETEQApoERERAymgRUREDKSAFhERMZACWkRExEAKaBEREQMpoEVERAykgBYRETGQAlpERMRACmgRERED/X9q5WvIJE3eXgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 628.397x445.48 with 1 Axes>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lookahead_circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:58.935337Z",
     "start_time": "2019-12-10T21:47:58.646318Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 808.997x445.48 with 1 Axes>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stochastic_circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Preset Pass Managers\n",
    "\n",
    "Qiskit comes with several pre-defined pass managers, corresponding to various levels of optimization achieved through different pipelines of passes. Currently ``optimization_level`` 0 through 3 are supported; the higher the number, the more optimized it is, at the expense of more time. Choosing a good pass manager may take trial and error, as it depends heavily on the circuit being transpiled and the backend being targeted.\n",
    "\n",
    "Here we illustrate the different levels by looking at a state synthesis circuit. We initialize four qubits to an arbitrary state, and then try to optimize the circuit that achieves this.\n",
    "\n",
    "- ``optimization_level=0``: just maps the circuit to the backend, with no explicit optimization (except whatever optimizations the mapper does).\n",
    "\n",
    "- ``optimization_level=1``: maps the circuit, but also does light-weight optimizations by collapsing adjacent gates.\n",
    "\n",
    "- ``optimization_level=2``: medium-weight optimization, including a noise-adaptive layout and a gate-cancellation procedure based on gate commutation relationships.\n",
    "\n",
    "- ``optimization_level=3``: heavy-weight optimization, which in addition to previous steps, does resynthesis of two-qubit blocks of gates in the circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:58.956270Z",
     "start_time": "2019-12-10T21:47:58.937115Z"
    }
   },
   "outputs": [],
   "source": [
    "import math\n",
    "from qiskit.providers.fake_provider import FakeTokyo\n",
    "\n",
    "backend = FakeTokyo()     # mimics the tokyo device in terms of coupling map and basis gates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:47:59.632459Z",
     "start_time": "2019-12-10T21:47:58.959187Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"word-wrap: normal;white-space: pre;background: #fff0;line-height: 1.1;font-family: &quot;Courier New&quot;,Courier,monospace\">     »\n",
       "q_0: »\n",
       "     »\n",
       "q_1: »\n",
       "     »\n",
       "q_2: »\n",
       "     »\n",
       "q_3: »\n",
       "     »\n",
       "q_4: »\n",
       "     »\n",
       "q_5: »\n",
       "     »\n",
       "q_6: »\n",
       "     »\n",
       "q_7: »\n",
       "     »\n",
       "q_8: »\n",
       "     »\n",
       "q_9: »\n",
       "     »\n",
       "«     ┌────────────────────────────────────────────────────────────────────────────┐\n",
       "«q_0: ┤0                                                                           ├\n",
       "«     │                                                                            │\n",
       "«q_1: ┤1                                                                           ├\n",
       "«     │  Initialize(0.5j,0.35355,0,0,0,0,0,0,0.35355,0.35355j,0,0,0,0,0.5,0.35355) │\n",
       "«q_2: ┤2                                                                           ├\n",
       "«     │                                                                            │\n",
       "«q_3: ┤3                                                                           ├\n",
       "«     └────────────────────────────────────────────────────────────────────────────┘\n",
       "«q_4: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_5: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_6: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_7: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_8: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_9: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   </pre>"
      ],
      "text/plain": [
       "     »\n",
       "q_0: »\n",
       "     »\n",
       "q_1: »\n",
       "     »\n",
       "q_2: »\n",
       "     »\n",
       "q_3: »\n",
       "     »\n",
       "q_4: »\n",
       "     »\n",
       "q_5: »\n",
       "     »\n",
       "q_6: »\n",
       "     »\n",
       "q_7: »\n",
       "     »\n",
       "q_8: »\n",
       "     »\n",
       "q_9: »\n",
       "     »\n",
       "«     ┌────────────────────────────────────────────────────────────────────────────┐\n",
       "«q_0: ┤0                                                                           ├\n",
       "«     │                                                                            │\n",
       "«q_1: ┤1                                                                           ├\n",
       "«     │  Initialize(0.5j,0.35355,0,0,0,0,0,0,0.35355,0.35355j,0,0,0,0,0.5,0.35355) │\n",
       "«q_2: ┤2                                                                           ├\n",
       "«     │                                                                            │\n",
       "«q_3: ┤3                                                                           ├\n",
       "«     └────────────────────────────────────────────────────────────────────────────┘\n",
       "«q_4: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_5: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_6: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_7: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_8: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   \n",
       "«q_9: ──────────────────────────────────────────────────────────────────────────────\n",
       "«                                                                                   "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "qc = QuantumCircuit(10)\n",
    "\n",
    "random_state = [\n",
    "    1 / math.sqrt(4) * complex(0, 1),\n",
    "    1 / math.sqrt(8) * complex(1, 0),\n",
    "    0,\n",
    "    0,\n",
    "    0,\n",
    "    0,\n",
    "    0,\n",
    "    0,\n",
    "    1 / math.sqrt(8) * complex(1, 0),\n",
    "    1 / math.sqrt(8) * complex(0, 1),\n",
    "    0,\n",
    "    0,\n",
    "    0,\n",
    "    0,\n",
    "    1 / math.sqrt(4) * complex(1, 0),\n",
    "    1 / math.sqrt(8) * complex(1, 0)]\n",
    "\n",
    "qc.initialize(random_state, range(4))\n",
    "qc.draw()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now map this to the 20-qubit Tokyo device, with different optimization levels:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:00.000884Z",
     "start_time": "2019-12-10T21:47:59.634920Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gates =  OrderedDict([('cx', 70), ('u3', 15), ('u1', 15), ('reset', 4)])\n",
      "depth =  87\n"
     ]
    }
   ],
   "source": [
    "optimized_0 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=0)\n",
    "print('gates = ', optimized_0.count_ops())\n",
    "print('depth = ', optimized_0.depth())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:00.474954Z",
     "start_time": "2019-12-10T21:48:00.003129Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gates =  OrderedDict([('cx', 22), ('u3', 15), ('u1', 6)])\n",
      "depth =  40\n"
     ]
    }
   ],
   "source": [
    "optimized_1 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=1)\n",
    "print('gates = ', optimized_1.count_ops())\n",
    "print('depth = ', optimized_1.depth())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:01.649048Z",
     "start_time": "2019-12-10T21:48:00.477272Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gates =  OrderedDict([('cx', 20), ('u3', 15), ('u1', 6)])\n",
      "depth =  38\n"
     ]
    }
   ],
   "source": [
    "optimized_2 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=2)\n",
    "print('gates = ', optimized_2.count_ops())\n",
    "print('depth = ', optimized_2.depth())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.166110Z",
     "start_time": "2019-12-10T21:48:01.651535Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gates =  OrderedDict([('cx', 20), ('u3', 15), ('u1', 6)])\n",
      "depth =  38\n"
     ]
    }
   ],
   "source": [
    "optimized_3 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=3)\n",
    "print('gates = ', optimized_3.count_ops())\n",
    "print('depth = ', optimized_3.depth())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introducing the DAG"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In Qiskit, we represent circuits internally using a Directed Acyclic Graph (DAG). The advantage of this representation over a pure list of gates (i.e., *netlist*) is that the flow of information between operations are explicit, making it easier for passes to make transformation decisions without changing the semantics of the circuit.\n",
    "\n",
    "Let's start by building a simple circuit, and examining its DAG."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.375950Z",
     "start_time": "2019-12-10T21:48:03.169405Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQUAAADWCAYAAADYS5ekAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXhklEQVR4nO3dfVxU173v8c/MCKJSn8oxFgEjIERRIOIDahU0xKCN8SGaE/VFq2L0qjlN1LbmXmOa1ISmRHM9ba3GaGvbVJKjwbTJ0ZxjDBB7UeMTFjWR+BARS4wxKpIgKMP9g+PEFQFRB/YMfN+v17wc1t6z9g9m/M5ea+/ZY6uqqqpCROR/2K0uQEQ8i0JBRAwKBRExKBRExKBQEBGDQkFEDAoFETEoFETEoFAQEYNCQUQMCgURMSgURMSgUBARg0JBRAwKBRExKBRExKBQEBGDQkFEDAoFETEoFETEoFAQEYNCQUQMCgURMSgURMSgUBARg0JBRAwtrC7A02XugdPnrdl2lw4wvq8127bCk08+SV5eniXbjo2NZfny5ZZs29MoFG7i9Hk49rnVVTQPeXl55OTkWF1Gs6fhg4gYFAoiYlAoiIhBoSAiBoWCiBgUCiJiUChIs+Pj42N1CR5N5ymI17r33nsZOnQocXFxdOrUiaqqKk6fPs3evXvZtm0bBQUFNzxm6tSpzJ8/n6SkJD7/XCeg1EShIDeoqgKbzeoqavfII4/wk5/8hH79+tW4PDU1FYD333+ftLQ0tm3bBlQHwtq1a7Hb7YwePZq1a9c2Ws3exKNDwel08vLLL/PKK69w6tQpIiMj+fWvf83MmTNJSEhg9erVVpd4g43PJxLSK4n+Y5+uV7un+LIUPjgCu0/AV+XQpiUMCIUhkdChjdXVVevUqROvvvoqDz30EADnzp1j06ZN7N69m8LCQmw2G+Hh4QwYMIAxY8YwfPhwhg8fzpo1a9i7dy8rVqzAbrezcOFCBUIdPDoUUlNTyczMZPHixcTFxZGbm8ukSZM4e/Ys8+fPt7q8JqPwHPxuG1y+8k3bV+Xw/kew8xjMuQ+COlpXH0BwcDBZWVmEhYVx8eJFnnrqKdatW8fly5dvWPc3v/kNbdu25fHHH+eZZ55hxowZpKamYrPZWLhwIenp6Rb8Bt7DY0MhIyODdevWkZ2dTUJCAgDDhg1j3759ZGZm0qdPH4srbBoqrsLqLCi/WvPysiuwOhueGQMtHI1amkubNm3YunUrYWFh7Nmzh7Fjx3L69Ok6H1NSUkJaWhoAzz//PDabjePHj7N06dLGKNmreezRh7S0NJKTk12BcE14eDg+Pj5ER0cD8Omnn5KQkEBERAS9e/dm+/btVpTrtfIKobS8eh6hJlVVUFIG+UWNW9f10tPTiYyMJD8/n6SkpJsGwjVTp05lyZIl2Gw2SkpKCA0NZd68eQ1crfezVVXV9nKwTlFREcHBwaxdu5bp06cbyyZNmsTHH3/M/v37AXjggQcYM2YMc+bMITc3l4kTJ3LixAl8fX3r3IatnjNpDy/KIqhHYr1r3/h8Ip8d24XDp6XRfuVyKfHjn72lOYWij7J584Vh9V7/diTPXU/3/hOxO2rfaXRWXuXj//dntq6eXus6DSUmJoa8vDwqKiro27cv+fn59Xrc9ZOKCxcuJD8/n82bN3P58mW6du3aLI881Pe/ukfuKRQVVb8tde7c2WgvKysjJyfHNXT44osv+Pvf/+6abR40aBCBgYFkZWU1bsHf0n/MImavvmDcAiO+b2lNtXE46g7Pa+z1XM/d5syZA8CqVatuOxDS09PZsmULb7/9Nn5+fje80YjJI0MhICAA4IbjzOnp6RQXFxMXFwdAYWEhd911Fy1bfvOu3K1bN06ePHnTbVRVVdXrlpCQ6L5f7BYlJCTWu87bvc2Z/nCdewkAdkcLFsyZ0uC1fHuo6HA4mDx5MgArVqyo19+spkC45lofKSkpNfytExr897P6Vl8eOdEYGhpKdHQ0aWlpdOzYkS5durBx40Y2b94M4AoFuXMDw2HrQajrJWO3wYCwRivJpUePHvj7+3P8+PEaT0T6troCASArK4vy8nLuuece/P39KS0tbajSvZpH7inY7XY2bNhAVFQUs2fPZtq0aQQEBDB37lwcDodrkjEkJIQzZ85QXl7ueuyJEyfo2rWrVaV7nQ5tYFRM3euMvhfatmqceq7Xu3dvANf8UV1uFggAFRUVHDp0CLvdTq9evdxeb1PhkXsKABERETfMDaSkpNCzZ09atap+hQYEBDB48GDWrl3rmmg8ffo0w4Y17ORcXSY8nX1L7Z7g/l7Q2hfezYdL1x32b9cKRsZAvAV7CQAnT55k9erV7Ny5s871Bg4ceNNAuOb1119n9+7dnD9v0YU3vYDHhkJN9uzZQ3x8vNG2atUqpk6dyvLly/H19SUjI+OmRx7kRoMjID4cFmRU/zz3PgjrBHYL9yVzc3PJzc296Xo7duxg5cqVFBYW3vTEpJdeesld5TVZXhMKpaWlFBQUuGajrwkNDeWDDz6wqKqmxXFdAHTvXPt6nujxxx+3uoQmw2tCwd/fn8rKSqvLEGnyPHKiUUSso1AQEYNCQUQMCgURMSgURMSgUBARg0JBRAxec56CVbp0aJ7btkJsbOwtP+Z4YTEAoSHfM+43xrabKo+8yIpY58m/VP+7fIq1ddTXU7+qvnjviwtnGvfl9mn4ICIGhYKIGBQKImJQKIiIQaEgIgaFgogYFAoiYlAoiIhBoSAiBoWCiBgUCiJiUCiIiEGhICIGfXRa5A4deR8uWfDN9t/pBJHD3d+vQkHkDl36HC4UWV2F+2j4ICIGhYKIGDR8ECquQsFnUHjum7Y/fACd20NIR4j4Hvg4LCtPGplCoRn7qhzeOwQ7j0FZhbnswKnqG0CbltVfR39fVPVX1sutW7AykY9O7sDh8MFud9C5Qzcm37eIhJiJVpd2A4VCM3WwCN7YBZcu33zdr8ph22HYcwL+dQD07NLw9TVFU5IWMyXpaSorr/LX3N/yy/WTCe9yL10Cwq0uzaA5hWZo+xFYk1O/QLjexTJ4NRt2HG2QspoNh6MFIwc8RqXzKsf+mWd1OTdQKDQz+0/Cm3tu//FVwH/sgvxTbiup2blytYJ3clcCEBQQYXE1N9LwoRm5WAb/8WHd61y7tPu1S73XpIrqoUe3fwF/P7eV1+St3/YCG3KWUlZ+CYfDh/kT1xAaGA3Alg/X8t7eP7vWLf7yOL27DeF/T67jiWggHr2n4HQ6Wbp0Kd27d8fPz4+YmBhycnKIjIxk5kxd2/9WvZN344Ti7Soth83/cE9fzcXk+xbx1pILbHz2C/rfM4oDR7Ncy0b2T2XZ7GyWzc5m0ZTX8fNtw7TkFyyp06NDITU1lSVLljBr1iy2bNnCI488wqRJkzh+/DhxcXFWl+dVSi/Dvk/d2+ee4+4LmebkO607MH/iGnZ9/J/kHvyrsczpdPLLjCmkjvwlnTvebUl9Hjt8yMjIYN26dWRnZ5OQkADAsGHD2LdvH5mZmfTp08fiCr1LXiFUOt3bZ0Ul/OMUDAhzb7/NQdvWHXl4yHx+/+7/Ib7naOz26vfnP299jm6dezO411jLavPYPYW0tDSSk5NdgXBNeHg4Pj4+REdXj8WeeeYZIiIisNvtbNy40YpSvcL1Jya508kG6rc5GDfkCb4sKWbr3j8BsO+Tbewt+G8e+0G6pXV55J5CUVERBw8eZN68eTcsKywsJCoqipYtWwKQnJzM1KlTmT59emOX6VX+eaFh+i0+3zD9NjXLZmff0NbGry2Zv/gSgC9LPuO3bz1OWuoWfFpYe4aYx4YCQOfOnY32srIycnJyGDlypKtt0KBBt7UNm812+wV6oR++9DEdvhdptNX1JbK1Lfv2UYkP9x7Alhx7Z8XdgYUvvgJUP5/X329MS/9XFjFhiXfUx2vvLeGryxd56Y2prrbgf4nkyQmv1PqYnJxs+k0aVu9t1Pe7pD0yFAICAgAoKChg1KhRrvb09HSKi4s1yXgbKq82zIygs1Izje7w4/Er+PH4FVaXAXhoKISGhhIdHU1aWhodO3akS5cubNy4kc2bNwO4JRTqm5pNxR8++OazDNfUdC5Cfc5TuN6o4f3IWGzd3/La189XVVUZ9xvTntetuZ5CQkIiVSvd/7t65ESj3W5nw4YNREVFMXv2bKZNm0ZAQABz587F4XC4Jhml/oI6Nky/wQ3Ur1jHI/cUACIiIsjKyjLaUlJS6NmzJ61atbKoKu8VHQz/ecC9fdqA3sHu7VOs55F7CrXZs2fPDUOHxYsXExQUxI4dO5g1axZBQUEcO3bMogo9113toPtd7u2zRyB819+9fTZ1K/82j3m/G8KKvz5htKe/PpV/+/UAFqxM5P396y2qrprXhEJpaSkFBQU3nLS0ZMkSioqKKC8v59y5cxQVFREWprNpajL6XrC7aWLeboMfxLqnr+bik6J9lJWX8n/nbOfq1QqOnNptLH9q8l9YNjub4fdOtqjCah47fPg2f39/KisrrS7Dq4V8F+7rCVsP3XlfD/SGLh3uvJ/m5KPCncRF3A9An+5JHD65g8jgfkD1YdT0139I29bf5fFxv+WuDl0tq9NrQkHcY2Q0fFFa/RHqmtTnqEO/ULi/l3vrag5Kyy7wvY6hALTxa8enZ75J51mjl9G2dUcOnvg7r7y9gGd+aN3ZuV4zfBD3sNshZRAM61E9UXgrbFTvaUyKd98wpDlp49eOr8tLAPiqvAT/Vu1dy9q2rj6M06vb9/ny0mdWlOeiUGiG7HYY0wf+7f76H6oM+S488YB75yWam55dB7L/k20A7P/kPXqExLuWfXW5OixOfX7ECAsraPjQjIV2ggXJ1R9q2n8STp2Dzy7ClUrwbQGd21Wfh9Dn7upQkDvTPagPPj5+zPvdEMICY+nUPoS/bHuBKfct4sX1U7hUdh6bzcaPx6+0tE6FQjNns8HdAdU3aXhzx/y78fOU+xYBsGT621aUUyMNH0TEoFAQEYOGDyJ36Dudbv0xJ079E4BuwYHG/Ybebn0oFETu0O18HfzGX70DwMRHZxr3PYGGDyJiUCiIiEGhICIGhYKIGBQKImJQKIiIQaEgIgaFgogYFAoiYlAoiIhBoSAiBoWCiBgUCiJiUCiIiEGhICIGhYKIGBQKImJQKIiIQaEgIgaFgogYFAoiYlAoiIhBoSAiBo8OBafTydKlS+nevTt+fn7ExMSQk5NDZGQkM2d6xjXyRZoaj/4ymNTUVDIzM1m8eDFxcXHk5uYyadIkzp49y/z5860uT6RJ8thQyMjIYN26dWRnZ5OQkADAsGHD2LdvH5mZmfTp08fiCkWaJo8dPqSlpZGcnOwKhGvCw8Px8fEhOjqa8+fP8+CDDxIREUFMTAwjRozg6NGjFlUs0jR4ZCgUFRVx8OBBJk6ceMOywsJCoqKiaNmyJTabjSeffJKCggIOHDjAgw8+yLRp0yyoWKTp8NhQAOjcubPRXlZWRk5Ojmvo0L59e5KSklzLBw0axIkTJ+q1DZvNplsTuF3/fHrTc2tF3fXlkaEQEBAAQEFBgdGenp5OcXExcXFxNT5u+fLljB07tqHLE2nSPDIUQkNDiY6OJi0tjT/96U9s27aN2bNn8/vf/x6gxlB47rnnOHr0KOnp6fXaRlVVlW5N4Hb98+lNz60VddeXR4aC3W5nw4YNREVFMXv2bKZNm0ZAQABz587F4XAQHR1trP/888/zzjvv8O6779K6dWuLqhZpGjz2kGRERARZWVlGW0pKCj179qRVq1autueee47NmzezdetW2rdv38hVijQ9HhsKNdmzZw/x8fGunw8dOsSzzz5LWFgYiYmJrva8vLzGL06kifCaUCgtLaWgoIA5c+a42qKiom5prCQiN+c1oeDv709lZaXVZYg0eR450Sgi1lEoiIhBoSAiBoWCiBgUCiJiUCiIiEGhICIGhYKIGBQKImJQKIiIQaEgIgaFgogYFAoiYlAoiIhBoSAiBoWCiBgUCiJiUCiIiEGhICIGhYKIGBQKImJQKIiIQaEgIgaFgogYFAq1GDFiBLGxsfTu3ZsJEyZQUlJidUnSALKzs4mKiiI8PJwZM2boC4dQKNRqw4YN5OXlkZ+fT1BQEC+//LLVJYmbOZ1OZsyYwYYNGzh69CglJSW89tprVpdlOYVCLdq1awdUv3AuX76MzWazuCJxt927dxMYGEjPnj0BSE1N5c0337S4KuspFOowbtw4OnXqxJEjR1iwYIHV5YibFRUVERwc7Po5JCSEU6dOWViRZ/CaL5i1wqZNm6ioqCA1NZWNGzcydepUq0sS4O33cjl+qtho+/c/vFnj/die4SQMiKmxH31jec20p3ATvr6+PProo2zatMnqUuR/fL9fb768UELx5+dcbd++X/z5OcoulzMgtket/QQHBxt7BoWFhQQFBTVM0V5EoVCDS5cuUVxc/U7kdDr529/+RlRUlMVVyTUd2n2Hh5IG17mODZj4g0T8WvrWuk7fvn0pKiri8OHDAKxdu5bx48e7s1SvpFCowaVLl3jooYeIjo4mOjqaq1ev8vTTT1tdllynT6/uREXcXevy7/eLJiwksM4+HA4Ha9asYcKECYSFheHv709KSoqbK/U+mlOoQWBgILt3765xWVVVlY5EeACbzca4B4Zw8vQZSr8qM5bdFdCBEUP71quf4cOHu/YUpJr2FG5Rzq4D/OWtrVzVSS6W82/digkjE4w2h93Ovz44DJ8Wnvt+V1VVxakTn7D1rxmkpKSQ8+4mvjx7xuqyXLw+FPLz83n44YcJCAjAz8+P7t27s2jRogbZVnl5BR/sOkDFlau0cDgaZBtya+4JC6F/zD2un+8f0pfAuwIsrKhuZ8+eZfDgwax/ZSn7d+aQkZHBzux3eXXZMzz22GNcuXLF6hK9e/iwd+9ehg4dSnBwMC+99BJdu3blxIkT5ObmNsj2cvcd4uvL5SQNjmuQ/uX2/GD4QI6d/Cf+bVoxtH+01eXU6urVqyQnJ7N//36geo/h+tOq16xZg6+vLytWrLCqRABsVV58sDYxMZHDhw/zySefuM5ArK+nfrW6gaoSqdmRg/t467VX6l7JZmP2U7+kbbsObt/+iwtn1ms9rx0+fP3112zfvp1JkybdciCIWOHg3p03n6SuquKjvA8bp6BaeO3w4fz58zidzts+2aS+qQnVcwm/WpVBcGAnpk0ceVvbE8nKXMvRm+yY2+127r2n6y29Pt3Na0OhQ4cO2O12Tp8+fVuPv53hw5HjpzTskNt2rqQMm81W5+nVTqeTvYePN8jrrMkPH1q3bs3QoUPJyMjQtQ7EK/SM7V+vz1v0iOnfCNXUzqsnGq8dfejatSs/+9nP6Nq1K4WFhWzfvp01a9a4ZRtZO/bzXx/sZm7KWIIDO7mlT2meKioqiI2N5ciRIzidzhrX+dGPfsS6desat7Bv8do9BYC4uDh27NhB9+7dmTdvHqNGjeKFF14gMLDu01vrq7y8gu0f/oPI0GAFgtwxX19ftm7d6vocjcPhwG63Y7dX/zecOHEiq1atsrJEwMv3FBpa8efneO2trTz64HCFgrhNZWUlW7Zs4Y033uDixYsEBQUxffp0+vat36nZDU2hcBNOp9OV5CLNgUJBRAx6CxQRg0JBRAwKBZFGMG/ePIYMGcITTzxR4/LVq1cTHx9PfHw869evb+TqTAoFkQa2b98+SktL2b59OxUVFTVewGfEiBHs3LmT7du3s2zZMguq/IZCQaSB7dy5k/vvvx+ApKQkduzYwU9/+lOcTifJyckUFhZy9913A9CiRQtaWHyBGIWCSAO7cOECbdu2Baq/ZOjChQucOXOGmTNnMnr0aEJCQlzrrlq1ijFjxlhVKuDFH4gS8Rbt2rVzfT6npKSE9u3bM2vWLEaOHGlcUGXXrl1s3ryZt956y6JKq2lPQaSBDRw4kG3btgHw3nvvER8fz5IlS/j5z3/Oiy++CMDp06dZsGABf/zjH3FYfKk/hYJIA+vTpw9+fn4MGTIEh8NBbm4u48aNY8GCBeTn53Po0CF+8YtfcObMGcaPH09iYiJlZWU377iB6IxGETFoT0FEDAoFETEoFETEoFAQEYNCQUQMCgURMSgURMSgUBARg0JBRAwKBRExKBRExKBQEBGDQkFEDAoFETEoFETEoFAQEYNCQUQM/x9azFSFkumyUwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 327.397x264.88 with 1 Axes>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit\n",
    "from qiskit.dagcircuit import DAGCircuit\n",
    "q = QuantumRegister(3, 'q')\n",
    "c = ClassicalRegister(3, 'c')\n",
    "circ = QuantumCircuit(q, c)\n",
    "circ.h(q[0])\n",
    "circ.cx(q[0], q[1])\n",
    "circ.measure(q[0], c[0])\n",
    "circ.rz(0.5, q[1]).c_if(c, 2)\n",
    "circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the DAG, there are three kinds of graph nodes: qubit/clbit input nodes (green), operation nodes (blue), and output nodes (red). Each edge indicates data flow (or dependency) between two nodes. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.525267Z",
     "start_time": "2019-12-10T21:48:03.378085Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<PIL.Image.Image image mode=RGBA size=331x466 at 0x7FF9942676D0>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.converters import circuit_to_dag\n",
    "from qiskit.tools.visualization import dag_drawer\n",
    "dag = circuit_to_dag(circ)\n",
    "dag_drawer(dag)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Therefore, writing a transpiler pass means using Qiskit's DAGCircuit API to analyze or transform the circuit. Let's see some examples of this."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**a. Get all op nodes in the DAG:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.532050Z",
     "start_time": "2019-12-10T21:48:03.527373Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[DAGOpNode(op=Instruction(name='h', num_qubits=1, num_clbits=0, params=[]), qargs=(Qubit(QuantumRegister(3, 'q'), 0),), cargs=()),\n",
       " DAGOpNode(op=Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]), qargs=(Qubit(QuantumRegister(3, 'q'), 0), Qubit(QuantumRegister(3, 'q'), 1)), cargs=()),\n",
       " DAGOpNode(op=Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]), qargs=(Qubit(QuantumRegister(3, 'q'), 0),), cargs=(Clbit(ClassicalRegister(3, 'c'), 0),)),\n",
       " DAGOpNode(op=Instruction(name='rz', num_qubits=1, num_clbits=0, params=[0.5]), qargs=(Qubit(QuantumRegister(3, 'q'), 1),), cargs=())]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dag.op_nodes()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Each node is an instance of the ``DAGOpNode`` class. Let's examine the information stored in the fourth op node."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.540054Z",
     "start_time": "2019-12-10T21:48:03.534378Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "node name:  rz\n",
      "node op:  Instruction(name='rz', num_qubits=1, num_clbits=0, params=[0.5])\n",
      "node qargs:  (Qubit(QuantumRegister(3, 'q'), 1),)\n",
      "node cargs:  ()\n",
      "node condition:  (ClassicalRegister(3, 'c'), 2)\n"
     ]
    }
   ],
   "source": [
    "node = dag.op_nodes()[3]\n",
    "print(\"node name: \", node.name)\n",
    "print(\"node op: \", node.op)\n",
    "print(\"node qargs: \", node.qargs)\n",
    "print(\"node cargs: \", node.cargs)\n",
    "print(\"node condition: \", node.op.condition)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**b. Add an operation to the back:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.660392Z",
     "start_time": "2019-12-10T21:48:03.542892Z"
    },
    "tags": [
     "nbsphinx-thumbnail"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAHSCAYAAADsarw5AACw5klEQVR4nOzdd3xTVRvA8d9Nupvulpayl5Q9CsgWZS+RPWSJMkVQQPYSRSgiiiDIUJa0bNAyhYqMslFm2RsKtHTPtEnu+0eUl02bJk3Snq+ffrS3Pec8ud7myT33DEmWZRlBEAQhv7uqMHcEgiAIgmUQCUEQBEEAwMbcAQjW79GjR1y6dIn79+9z//59HkQ9ICUzhbTUNFLUKbip3LCztcPDyQN/f398fX0pUqQIZcuWxdHR0dzhCxbi7t27XLt2jXv37hEVFcX9qPuodWqSkpLI0GTg4eaBjcIGHzcfChYsSIECBShRogSlS5fG1tbW3OHnCZJ4hiBkR3x8PPv372ff4X2EHQ7j6rmrYA92Ze3QFtKiLqBGXUANzoDdEwWTQUqRcIxyxPa+LdJtibTLabh4uFCpaiWa121OvTr1qF27NjY24nNKXvfgwQP++usv9h7ey19H/uL2pdvYetqiLKNEW1BLul86mR6Z4AoonyiYAIoUBY4P9deRfFMm7VoaXoW8qFGjBs1qN6N+/fpUqVIFSZLM9fKs1VWREITXioyMZHXIalaHrubS2UvYN7AnqV4Sujo6qIz+j9ZQd4GTYHfIDscDjmgua3iryVv06dCHd999FwcHByO9CsHcLl26xIrgFazbuo77kfexeceGxDqJUBuoABh6s6gDbgBHwfGII7b7bFE8UtCyVUv6du5L48aNUSqVr6tFEAlBeBlZltm2bRszfpzBP3//A10hrX0a1AdMeXceA+wC1zWu6I7o6NSpE2OHj6Vs2bImbFQwlYyMDIJDgvlm0TfcirxFRs8MMttlQiCmfYJ5B6RtEq7BrihuKPioz0eMGDoCPz8/EzZq9a4iC8ITdDqdHBwSLBcpX0R2resqsx4ZNbJZ/nmIbDPTRnYu7Cw3fq+xfObMGXOfHiGL1Gq1/O3338qeRTxll7YuMnuQ0ZrpOrqKbP+5vezk4yT3+KiHfOfOHXOfHkt1RSQE4bGjR4/K5WuVl10buMocNNMf74v+USNLiyXZqbD+D/rRo0fmPlXCK/z++++yfxl/WdVJJXPB7FfP//9JQLb90lZ29nWWP5/4uZyWlmbuU2VproguIwG1Ws3YKWNZGryUlO9SkDta6CWRAvbT7XFa5cQv83/hvXbvmTsi4QlxcXH0H9afP/75g6RFSVDP3BG9xENwHOOI1zEvNi7fSK1atcwdkaUQzxDyuwcPHtC8Y3OuFr1K6oJU8DB3RFlwAlS9VPR/rz+zp89GoRDTaczt/PnzNH2vKbEdY1F/oQZ7c0eUBVvBeZAzs6fMZlD/QeaOxhKIhJCfXb16lXrN6hH7cSyakRpzh5M9CeDcw5kGjg34PeR3MQ7djA4cOEDrrq1Jnp+M3MHK3k5ugeo9FR81/4jvZn5n7mjMTSSE/Or69evUfqc2sV/Hou2hNXc4htGCU08nGmY2ZOvarWJooRmEh4fTonMLkjckQ11zR2OgRHBu4cyAtwcwZ/occ0djTmIto/woNTWVpu2bEjMpxnqTAYASUlelckB9gM8nfm7uaPKdu3fv0qZrG5LXWHEyAHCFlJ0pLAldwvKVy80djVmJhJAPDfxsIPfr3kf3oc74ldcApH+/lmejnPcT5fZko5wNpPyawpJNS9i1a1c2Cgo5Icsy7/Z4l+QxydDQBA3k9nXkCsmbkvlk7CdcuXIlGwXzFpEQ8pkjR46w+Y/NpM1OM10jEwAZ6PvEsU1AOcABqAqEPVPmEZBkYHtukLwomX7D+qFWqw2sRMiO5SuWc1W6imaoCZ89PXsdhQNtABf0b/ytgbPPlMnJdVQaUiem8sGwDwyswPqJhJDPjJo2itTpqfq1hnJLONANGA1EAl3Q/2FfNGIbjSCxQiK/rv7ViJUKL6LT6Rj75ViSvk/SfxLPLY2BSsAd4PS/x5oCscZrQjdQx5nbZzh8+LDxKrUiIiHkI9evX+fUmVPInQ0cRxAPdAKcgOLAWsAP/ZvCqFeUm4H+09wHgCcwHggAZhsWxsskD08maEGQcSsVnrNz507SC6dDNQMriMew68gX+BpwBwoBc4CHwAED43gRJaQMTeGbhd8YsVLrIRJCPrJ9x3bk92TD1yIaCpwBjgMn0Xf7JAAhvPrNfT/PP3Ss/+9xY3oLIu9HEhkZaeSKhSdt3L6RpK6G9stg+HV0i6fvSNz+/beR1z/UddXxx44/0OlM8IzNwomEkI/sOrSL1AaphhWORv8HOw79ypReQBCQ/ppySf9++Txz3Be4Z1gor6Ksp8y3t/u5ZW/4XuQGBt5lGnodvUgYUBp9V5IxeYLSV8mlS5eMXLHlEwkhH7l977b+Ft0Ql9EvM1z+iWMe6P+gX+W/941n+5rlFxwzgvTi6dy7Z4JMIzwWfS8696+jZ8UD04CVmGSbL0VxRb68jkRCyEdSklNAZWDhl30gfN00Blf0o0KinjkeBfgbGMsrZLpmkpiUaPyKhcfUKWrDByUYeh09KQloD0wH6hgYx2vIrjJJSTnoFrNSIiHkI+4e7oaPyCiL/mqJeOJYNPpPaq/TADj0zLFwTDJ+3eGRA95e3savWHjMyd0J4gwsnJPrCPTdjG3QD0zoZGAMWaB4pMDLK7u3LdZPJIR8pGyJsmBot6gP0B2Yif6POQaYRNY+KY4BtgEr0L+RBP1bxwgDY3kF+8v2lChRwvgVC48VLlHYPNfRGfRDlhegH24K+slnYw2M5RUyL2dSvHhx41ds4URCyEdaNmyJy14XwyuYj34ceCBQE/1Q0qx0QTUEgtEPP/X7979Debof2RgyIf1IOnXrWvM6CpavZcOWKPfmYN0oQ66jdPQj0w4BFfn/bOSmrypkoOvgqHCkaNGiJqjcsomEkI+0atUK7W6tfoifIdyBDUAacB1o+5Lfm87zSw50Qj8RTY1+UtGzf8je6J815MRGqFmnJi4uOa1IeJVuHbvhtMrp5c8DXsed7F9HDkAi+jaf/Zr5RBkjXEe2K2zp2rFrziqxUiIh5COenp60e7cdNgtNMCzjPyf4/x9q32yUe/REuSYGtKsDl29dGP/JeAMKC9kRGBhIUc+i+rs8UzHXdZQIdkvtGDHEBP2ZVkAkhHwmaEoQDnMd4G4OK3qA/tPbQ/R9wq+aYZoLFMsUlHMtR4sWLcwbSD6xMGghqpEqw+YPPMnCriOHaQ5069At3z6HEvsh5EOzvpvFl799SfKeZJOM4c51l0D1topjYccoV66cuaPJN97v/z6bpc2kLTbhQom5aTd49/fm8j+X8fCwhq0DjU7sh5Afff7p59T3ro/DJw6G9wNbimhwfs+ZhbMXimSQy5b+sJTCJwqj/CEPbEwUAc59ndm6dmt+TQaA6DLKlyRJYsOKDVS4UAHH4Y7WmxSiwbmxM2P6jqFnj57mjibfcXR0ZG/oXvx+9MN2gRVvYRqh3zFtxbwVvPnmm+aOxqxEQsinnJ2d2bdtH1UvVsW5kzMkmzuibDoDzrWdmdhnIpPGTDJ3NPlWoUKFOPrnUQotKITDKIfszTi2BDtB1UTFyrkr6diho7mjMTuREPIxZ2dn9m/fT88iPVHVUsExc0eUBTIof1Ti0tyF4O+DGTvSBLOShGwpVKgQZw6fod6VeqjeUemHklo6NdiPs8dnsA9/hf5Fh/YdzB2RRRAJIZ+zsbHhp+9/IjgoGM9OnjiMdDB8WQJTOw2qd1RU31idM4fP8G7bd80dkfAvFxcXdm/ZzczuM1HVU2HzjY1+zokl2gOqGipa323Npb8vERgYaO6ILIZICAIAbdu25erpq/TV9cW5vDM2QTaGT2Aztgvg1McJz7aezO09l6NhR/PlsgKWTpIkPh70MeeOnKPVP61QlVMh/SJZTmIIB5eWLhT7rBjrv1nPxlUb8/UD5BcRw06F51y7do3JMyez5bctaN/Xou6n1i81kJsygZ3gssQF21O2jB42mk+GfIKTk1MuByIY6vjx44yfMZ7Dxw6jHqBG00cDxXI5iBRgE7j+5Ip7gjtffP4FvXr2QqnMAyOjjO+qSAjCSz148ICFSxayeNViUp1TSe2Yiqa1Bqpimr1004C94LjVEWmzRIWKFRjedzidO3fGzs7OBA0KueHy5cvMWzyPX0N+RS4jk/ReEro2Ov3mNqYQD+wCVagK3S4dDRo1YHi/4bRo0QJJys1NoK2OSAhC1hw5coSNv29kw/YNRD2Iwra2LUm1k9BV1en3Ry5G9pKEGv2KmRfB7oQdToedSD+XTpVaVXi/7fu0f689hQsXNslrEcxDq9USFhbG+q3r+X3b76RqU1HUVZBUOwm5ogzlgILZrDQZ/RpZEeB43BG7Q3Zk3MigQeMGdG/dnXbt2oluoawTCUHIvujoaI4cOcKBIwc4cvYIVy5eIfZ+LPYF7LHxs0EuIKOz1SG7yUgKCVkto0xVIqVI6O7r0DzUoEnWUKh0IcoHlKdh9YbUrV2XwMBAHByMvEGuYLHu3LnDoUOH2Hd0HyfPn+TapWskxSThUMgBZQElFACNUoPkrv+kIafK2Kj1z7Z093VkRmUiZ8gUK1uMSuUr8Vb1t6hTpw6VK1fGxiYvTMHPdSIhCMaRmZlJdHQ09+/fJzY2lvj4eKKiopg7dy7Tp0/H1tYWNzc3ChQogK+vL97eYhMb4XlqtZqHDx8SGRlJQkICiYmJ/P333xw+fJiPP/4YBweHx9eRv78/rq6u5g45LxEJQTCdq1ev0r59e86ePWvuUAQr9ttvvxESEsKaNWvMHUpeJ9YyEgRBEPREQhAEQRAAkRAEQRCEf4mEIAiCIAAiIQiCIAj/EglBEARBAERCEARBEP4lEoIgCIIAiIQgCIIg/EskBEEQBAEQCUEQBEH4l0gIgiAIAiASgiAIgvAvkRAEQRAEQCQEQRAE4V8iIQgWoUaNGkiShCRJLF++PMvlvL29H5fbs2eP6QIUrIK4jnJGJATBYkyYMAFZlunbt+/jY5s2baJcuXI4ODhQtWpVwsLCnirz6NEjkpKScjlSwZI9ex2Fh4fTpk0bXFxc8Pb2pnXr1s9t2iSuIz2REASLFR4eTrdu3Rg9ejSRkZF06dKFNm3acPHiRXOHJliRxo0bU6lSJe7cucPp06cBaNq0KbGxsWaOzPKIhCCYXHx8PJ06dcLJyYnixYuzdu1a/Pz8kCSJUaNGvbTcjBkzaN26NR988AGenp6MHz+egIAAZs+enYvRC5bC0OvI19eXr7/+Gnd3dwoVKsScOXN4+PAhBw4cyMXorYNICILJDR06lDNnznD8+HFOnjxJWFgYCQkJhISEvPLNff/+/dStW/epY/Xr12f//v2mDlmwQIZeR7du3UKSpMffu7m5AeDg4GDymK2NSAiCSWk0GkJCQhg3bhwVKlTAy8uLoKAg0tPTX1kuKSmJpKQkfHx8njru6+vLvXv3TBmyYIHUarVB19GLhIWFUbp0aRo3bmyCSK2bSAiCSWVkZKDT6ShfvvzjYx4eHnh5eb2ynCzLAE99svvv+LPHhLwvKSnJoOvoWfHx8UybNo2VK1diY2Nj7DCtnkgIgllotdpX/tzV1RUXFxeioqKeOh4VFYW/v78pQxOsyOuuoyclJSXRvn17pk+fTp06dUwYlfUSCUEwKTs7OxQKBREREY+PRUdHEx8f/9qyDRo04NChQ08dCw8Pp2HDhsYOU7BwLi4uBl9HAPfu3aNNmzaMHz+eTp06mShK6ycSgmBSNjY2dO/enZkzZxIREUFMTAyTJk3C2dn5tWXHjBnDtm3bWLFiBXFxcQQFBREREcGIESNyIXLBktjb2xt8HZ05c4YuXbqwYMECmjZtCsCePXsYO3asqcO2OiIhCCY3f/58KlWqRGBgIDVr1qR169aoVKrXlmvYsCHBwcHMmDEDPz8/goODCQ0NfaofWcg/DLmO0tPTqV+/PocOHaJixYqPZyP/lxiEp4mnKoLJubu7s2HDhtf+3vTp05k+fTrLli17PMu0U6dOr7zF9/b2JiYmxlihChbM0OsoMTHxtWXEdaQnEoJgEU6cOGFQuUePHhk5EsGaiesoZ0SXkZCrHjx4gCRJPHz4kO7du79yhqkgvIy4jkxD3CEIucrPz+/xHANBMJS4jkxD3CEIgiAIgEgIgiAIwr9EQhAEQRAAkRAEQRCEf4mEIAiCIAAiIQiCIAj/EglBEARBAECSxWBewYhGjRrFwoULAf3eBVqt9vG68wqFgt9++4133nnHnCEKVqBFixaPt7iUZRmdTodSqQT0CyZGRERQqFAhc4aYF10VdwiCUbVp0walUklqaippaWlkZGSQmppKamoqkiTRoEEDc4coWIE2bdoAPL6O1Gr14+uoaNGiIhmYiEgIglE1bNjwhTtRKRQKOnbsiK2trRmiEqxN165dXzgT2cnJiYEDB5ohovxBJATBqBQKBT179nwuKbi4uPDhhx+aKSrB2vj4+FC1atUX/qxz5865G0w+IhKCYHR9+vTB0dHxqWM2NjbUq1fPTBEJ1mjQoEG4uLg8daxq1ar4+vqaKaK8TyQEwegCAwNxdXV9/L2NjQ29evVCkiQzRiVYm/bt26PRaB5/r1KpGDRokBkjyvtEQhBMom/fvtjb2wP6ft//NrwRhKxycXHhrbfeevy9Vqvl3XffNWNEeZ9ICIJJ9O3b9/FzBFdXV6pUqWLmiARrNGDAANzc3AB46623Hv+3YBoiIQgmUbp0aQoWLIhSqaRfv37mDkewUi1btkSj0eDs7Ez//v3NHU6eJxKCYDIDBgxAq9XSs2dPc4ciWCkHBwfatm2LVqulVatW5g4nzxMzlQWDqdVw8iScPQunz8pcvSZz755E1APIyIDEhEgUio5IiiM4q2RUKihUSKagP1Qop6ByJahSBcqVM/crMT6tVsv58+c5f/485y6c49TVU9y5d4dHUY9IiEpAk6EhIyUDW0dbtGot9q722DnY4enriZ+/H6WKlKJ62eqUK1eOatWq5dmRNZmZmZw+fZrz589z8exZrp09y/1793j46BGPEhPJ0GpJy8xEkiQUkoTKzg4ne3sKenvj5+tL0TfeoHxgIGXLliUwMBAPDw9zvyRrdlUkBCFbrlyBjRth63YdZ05LFC+rpegbGRQqk0nBolo8C2hx89bh4q4D4OrZU5SuVBWtBhLjFMRFK4l9qOTuVRsir9ly7bwtyQkKGjSA9u0k2rQBa/yblmWZ06dPE7o9lN/+/I2IkxHYFbdDV0VHSkAKurI68AP8AS9A9UwFOiAWiAIeAjfA7pIdjhGOZJ7IxNnJmXp169G5ZWeaN2+Ol5dX7r5AI9HpdBw7doxtW7bw17ZtnL16lQAHByppNJRNSaGsLOOL/jR5Ak6AFjgDVAM0/P803QduAJccHDjv4MCJ9HQKeHlR7623aNmxI02bNn1u2KrwSiIhCK+XlASrg2HBQpmYOJlajdOp1iiNN6pkYueQ88snPkbB+aP2/L3XkVMH7WjQED4eLNG0KSgsvFPzwoULLF25lOWrl6P10JLWKo2MZhlQk+ff9HPiBrAfXHa4oAnTULFqRT7p/QkdOnTA2dnZiA2ZxsmTJ1m5eDHr1qyhiCTROiWFJhoNgYCDkdqQgUvAPmC7mxsH1Goa1KlDn6FDadOmDXZ2dkZqKc8SCUF4ubg4mPMdLFwoU6W+mnc6p1AuMMOkbWaqJQ7tdCBsnYrMFCVTJ0t07WpZiUGWZXbt2sXk2ZOJuBpBRp8MMntnQqlcCkAD7ACXlS7I+2U+7Pshnw/73OLW99FqtWzatInZkyeTdO8efVJT6anVkltRpgO/ASvd3DgFDB4+nMHDhlnt3VUuEAlBeJ5OBz/9BFO/kHmzeRrvfpiMl5821+O4cMKOjQtcyUy2YfFPEnXq5HoIzzlw4AADRg4gUhFJ4qhEaA8ozRjQfbD/wR6bZTb07dmXLyd8aRH96Fu3bmX0kCEUSkhgVGIizQBzTku8Bnzn6Mh6hYJPRo5kxJgxODk5mTEiiyQSgvC0mzeha3cZrW0mH0xMoGAxzWvLmNqxPQ6sDHKjY3uJ2bMk/p3vlqtiYmL4cNiHhB0PIzkoWZ8ILEksOHzpgN1aO3785kd6vm+ekV137txh4Pvv8+DUKb5NSuJts0TxcveAiU5O7HVyYuHKlbRs2dLcIVkSkRCE/wsNhQ/7y3QckkjTrqnmDucpaSkSv0xzJ/qmPdtCJYoUyb22d+/eTdd+XUntk4p6shosuSv6PKj6qqhbpC7rlq3L1YlcIatXM2LwYEanpTFco7HoMe2HgQ9UKhq2a8e8n39+PKs+nxMJQdBbtAimfqnj8x9jKR6Qae5wXuqPNU5s/dmVndslKlY0fXuzv5/N1O+mkrIuBd40fXtGoQG7CXYUCC3An7/9SZkyZUzanCzLjB81ii2LF7M5OZkAk7ZmPGnAEEdHLpYqxebdu/Hz8zN3SOYmEoIAy5bB1K+0TPg5Bu+Cuf+sILuO7XFgxdfuHNgnUbq06doZP3U880Lnkbw1GQqarh1TUaxW4D7OnfA/wgkIMM3btCzLDOzdmxubN7MhJQVrXFjiWxsblvj58efRo/j7+5s7HHMSCSG/27sXevTSMWXFIwoUtvxk8J8DoY789pMb/5yUMEWvSNCcIL5a/RXJe5LB/M9oDSZtlPAc4cnpQ6dNMgppxJAhnFu5kt9SUnB8/a9brPk2Niz09+fw2bNPrdSbz4iEkJ/FxEDlqjJDZsZSroZph5OawqpZbtilOrI2xLjjV/bu3UvbPm1JOZain0xm5ZQ/KAkICeDvfX8bdSx+SHAwXw0cyNHkZKNOuTCX0fb2XG7QgM1//JFfl2oXeyrnZ+MnytRumWq0ZLB2/rd0DPCnW+XiRqnvdbp/lsjxv3Xs2WO8OlNTU+n2YTdSfjVRMqiBfvylBCzPRjnvJ8pl8/Vqh2m5WfgmM7+dmb2CrxAVFcWIQYPYaKJkYIbTxAy1mkdHjvDrqlXZLJl3iISQT129Cpu3yLQfmGS0OrsOHcm4n1YYrb7XsbGV6T4igVGjjXeTO/2b6SQ3SoaGRqvyeRPQT6vt+8zxuYAtcPUFZR4BOfhflfJ9CrPmzuL+/fuGV/KECZ99Rn+12qQPkJ89TeFAG8AF/Rt/a+DsM2VycpqUwILkZMYNH05qqmWNssstIiHkU4uXwDudUnFSWXePYWAjNSnpOo4fz3ldarWa+Yvmkzo5l98M0oHewDr0s5BNoRBoemqY99O8HFf16NEjftuyhVEZudvN2BioBNwBTv97rCn6tY2MpTJQX6PJt3cJIiHkU8EhMg3fNd0b39nDB/m4WV161Qxg8dSxmPJRVd02KaxanfP6t23bBoFAcQMriAc6oV+RrTiwFn23kwSMekW5c0AvIMjAdrNIPVjNomWLclxPSHAwHWUZQx+9xmPYafIFvgbcgULAHPTrAB4wMI6XGZyczPIffjByrdZBJIR86PZt0MkyfkVNM6pIp9Xx9/4/mbVhJ+MWLOePtas4c9jYf7b/V7F2BvuNUP32vdtJap6Dfpmh6JflPA6cBMKABCAEmP2KcjXQf9Q1tVKQaZ/J1asv6pPKuj+3bKF5WprB5Q09Tbd4evmL/waXGWtxvP/UAy5ev05SkvG6U62FSAj5UEQElChnuiUptFoNbfr0x9nVlfI1a1OoZGluX7pgsvaKl83k8sWc13PszDHkGgbeaUSjf0cbB1RAv8R1EPruIAuiqKng9OnTr//FVzhz7hw1DCxrzNMUBpRG35VkTDZARUdHIiIijFyz5RMJIR969AhcPU0350CptMHL7/8zuZxd3UhNSTZdezZgZwcpKTmrJyYqxvCRRZfR72lQ/oljHujf8SyI2ldNVFRUjuqITkykgIFljXWa4oFpwEr0b+DG5qvT5fg8WSOREPIhhQJ0WtONs1Yon76scmNMt07O+RLZCqVCvxuLIV52Y2Fhc/0knYRSmbPlWRWShM7AssY4TUno1xacDphqAVydlPPzZI1EQsiHvL0hKS7v/K/XZEpoNeCYw6myXj5e+qeUhiiL/q/pyV6GaPQfZS2I3QM7fHx8clSHj5sbhn52zulpuod+6Ol49A+mTeUB5Pg8WaO8864gZFnlynD1vClutM3jeoQN5SvmfJRRnap1kI4ZeDfjA3QHZqJ/t4sBJgEWtpmZ9piWatWq5aiOqlWqcMzAsjk5TWeALsAC/v8Mfg8w1sBYXiYDiEhPp3z58q/93bxGJIR8yM8PnBwl7l03blLYsXoZMwb1ITMjg44B/qQkJvJJywZc/Ps46+Z/y7yxnxq1vf+cO2LPWw1yfim3btwa1x05WMdmPvqB8oHot9BsTda20dSgHz7T4N/vy6CfeWVsF8BJ4UTx4sVzVE3j995jRw42lzHkNKUD9YFDQEX+PxvZFIOz9gGVy5a1iq1JjU2sZZRPTZoMFx6m0GNEorlDyRFZhhGtC/D7JiVVquSsrszMTHxL+hK3N04/fMUY/IDvgW7/fl8D/VhLgGU8P1v5ZbzRf5wG2A00yX4oDp84MK7gOCaPn5z9wk+Ii4vjjcKFuZyaarR1/yzoNNHexYX28+bRu08fA0pbNbGWUX7V/yPYt8WJ5ATrvgSO7nbA30+R42QAYGtry8hPRuI8yYSfDE+gf7L6oqUrXuXRE+UMeZe7AbYbbBkyYIgBhZ/m4eFB9x49+NrB2DMA/s9cp+kYcMrBga7dur32d/Mi6343EAxWtCj0fB/Wz3cxdygGy0iXWPOdG98EGW8U0+effo77P+6wK4cVPUDfp/EQfaf5q6bgmpoMqqEqpoyZgre3cfqivpg1i2B7e07lsB5LOk0ZwBCVim9+/DHf7qAmuozyscRE/fLXvSfEUbW+2tzhZNvSqe4UdHbg56XGHdZ69OhRGndoTMqhFChm1KrNwna6LVX/rMqhXYewsTHec6Pff/uNkT17ciw52Zq3jHhssKMjic2bs3rzZnOHYi6iyyg/c3WFNcESP0304O5V6xp19McaZ26edWDeD8af4/Dmm2/y7Rffomqp0n+EtWLKX5R4LfNi25ptRk0GAO+2a8f7Q4fSWqXCup9EwVd2dhwvWpQlq1ebOxSzEgkhn6tdGxb+KDFzkBeRN6wjKezb4sj2ZS78sVMiB4NdXmngRwOZMnAKqndUcN00bZia8kcl3tO9ORJ2xGRj6qfOmEH9fv1orlIZPDfBnGRgop0dG4sWZVd4OE6muqCshEgIAh07wHezFUz7wJuLfxtvRy1jk2XYvFhF6BI39oZJFC5s2vZGDR/FD2N+QNVApR+yYi3SwWGAA6WWleLEvhMUK2bafq9Zc+fSftw4aqtUnDBpS8aVAHRwduZYYCB/HjuGl5eFrTNiBiIhCAB07Qrr10jMG+nJ7z+rkA1dm8BEkuIVzB7qxfVjKo4elihVKnfa/aDPB+zeuBvfQb44DnWEHK6XZHJHQVVdxXva9zh14BSFTZ01/zV6/Hjmr1nDe+7uTLGzw9I3ZP0DqOLszBsffsj2/fvx8MgLT0FyTiQE4bG33oJ//pa4e0rF5Pd9uB5ha+6QkGXYu8mJz9/zoUldO/b/JZHbKwrUrl2bq6ev0k3uhnM5Z6RfJAxezMdU7oLzB854dfEiZFYIIT+H4JjTtTyyqVXr1py6coXLzZtTUaViU662njWXgA4qFcMLF2b1rl0EzZ1r9Gcr1kyMMhJeaM0aGDFKJqCGmvYDkyhU0nTLZb+ILMPxPx3YvNAFHw8lPy2QqFgxV0N4odOnTzN49GDO3jpLysgU5F6y8Rfkz47L4DTHCcVmBSOHjWT0Z6Mtoh/84MGDjBo4kMy7d/k8MZFOmGZV0qz6B/hGpeIvpZIJ06YxYPBgbG3N/4HHwlwVCUF4qbQ0+OknmDVbpljZTN7unEL1t9Ix5SKQyYkK9v3myJ/rnPHxVPDlFxLNm5uuPUMdPXqUqbOnsm//PugKab3S9Osw5IYkYDO4rXBDcVnBiI9HMHTQUNzd3XMpgKzbs2cPs6dM4fzp07yv0dBLraZCLrUdC6yVJFa6uhLt4MCIiRPp26+fRSRMCyUSgvB6GRmwZQv8+JPMubP6fYyrvZVGuRoZuHrkvO8k8oYN547Z8XeYI1fO2fJeOxg8SKJWrZzHbmqRkZGsXL2SRb8uIjouGrmVTGrzVKgNFHxt8azRAGdB2i/hut2VjOMZNGraiCG9htCiRQur6PK4fv06K3/5heCff0ZOSaFNZiZN0tOpjfG2jMgA/gb2KRRsc3UlIiODtq1b02fIEBo2bIgip+uj530iIQjZ8/ChPjmEbtdxKFzC3UtH8bIaCpXJoGBxDR4+Ojx8tDi5ytjYyNg7yqQkKdBpITFWQVy0gtiHSu5dt+XGuQfcuOSEh7sfjd6C9u9JNG0K1jpJ9NatW2zbvo3NYZs5cfgEGjsNNlVsSA1IJaNshn7BnkLoF9xxBOz//Xf8vxXEAFH/fl0H1UUVNhdsSDubRuFShXm77tt0aNWBt99+GwcTLhthapcuXWLr77+zLzSUI//8g4dCQSWFgrLJyQRoNPihz6Xe6E+RA2AHJKJ/dPMI/ZLZD4DrksRFlYrzSiUX09KoULIk9Zo2pdV771G/fn3RLZQ9IiEIhpNluHgRzp6FM2fhyjWZu3f1SSM1Rf8lo1+awM0dnJyhcGGZQv4S5ctJnDk9FTu7R/zyy3wzvxLTuH37NufPnyc0NJTw4+G4+7vzMOohsVGxZKRlkJGuH4sjIeHo5oi9oz0+BXwoXKgwbxR5g0plK1G+fHkqVaqUp7s5rl27xvnz57l44QJXz5zh/q1bPHj4kNiEBFLUajIyM/W/KEl4ODnh6OCAn68vBQsVoli5cpSrVImAgAAqVaqEnZ3lDpu2AiIhCOYTGxtLQEAAp0+fpmBBY/WvWJ7evXtTv359BgwYYO5QBOFVREIQzGv06NEoFApmzpxp7lBMIiUlhWLFinHp0iUx8UmwdGItI8G8Ro4cybJly4iLizN3KCaxadMm3n77bZEMBKsgEoJgVr6+vnTs2JF58+aZOxSTWLVqFb169TJ3GIKQJaLLSDC727dv8+abb3LlyhVUqqzsOWkdIiMjqVq1Knfv3hUPOwVrILqMBPMrWrQozZo1Y/HixeYOxah+/fVXunbtKpKBYDXEHYJgES5evEjjxo25du2aVY+xf1LlypVZunQptaxhhp0giDsEwVIEBARQp04dVqxYYe5QjOLUqVOkp6eLZCBYFZEQBIsxceJEZs2ahUaTuwvpmcKqVavo06ePucMQhGwRCUGwGFWrVqVMmTKsXbvW3KHkiFarZc2aNfTo0cPcoQhCtoiEIFiU8ePHM336dHQ6S9twIOt2795NmTJlKFGihLlDEYRsEQlBsCgNGzbEy8uL33//3dyhGEzMPRCslRhlJFic7du3M3XqVI4dO2buULItOTmZEiVKcOXKFYvcn0AQXkGMMhIsT6tWrdDpdOzZs8fcoWTbhg0baNy4sUgGglUSCUGwSGPHjmX69OnmDiPbRHeRYM1EQhAsUocOHYiJiWH//v3mDiXL7t27R0REBM2aNTN3KIJgEJEQBIukUCgYP34806ZNM3coWbZy5Uq6du0qdukSrJZICILF6tKlCw8fPszxXUKNGjWQJAlJkli+fHmWy3l7ez8ul5XnGcHBwVnqLsqteAQhu0RCECyWQqFg3LhxfPnllzmua8KECciyTN++fZ86vmnTJsqVK4eDgwNVq1YlLCzs8c8ePXpEUlJSluo/efIkWq2WwMDAHMUDMHfuXGxtbbl69epTx7MTjyAYQiQEwaJ17dqVu3fvcuDAAaPXHR4eTrdu3Rg9ejSRkZF06dKFNm3acPHixWzXtWrVKnr37p2jeNLT0+nduzfr1q3LE8t3CNZHJATBoimVSiZMmMBXX3310t+Jj4+nU6dOODk5Ubx4cdauXYufnx+SJDFq1KiXlpsxYwatW7fmgw8+wNPTk/HjxxMQEMDs2bOzFaNGo2HdunW8//77OYrn3Llz9OrVi6CgoGy1LwjGIhKCYPG6d+/OrVu3OHjw4At/PnToUM6cOcPx48c5efIkYWFhJCQkEBIS8so39/3791O3bt2njtWvXz/bzyx27dpFuXLlKFKkSI7iqVGjBk2bNs1W24JgTCIhCBZPqVQ+XuPoWdHR0YSEhDBu3DgqVKiAl5cXQUFBpKenv7LOpKQkkpKS8PHxeeq4r68v9+7dy1Z8T849MDQeQbAEIiEIVuH999/nxo0bhIeHP3X88uXL6HQ6ypcv//iYh4fHaze1/2/FFkmSnjv+7LFXSUxMZPfu3bRv3z5H8QiCJRAJQbAKSqWScePGPXeX8LKluLRa7Svrc3V1xcXFhaioqKeOR0VF4e/vn+W41q9fT4sWLXBzc8tRPIJgCURCEKxGz549uXbt2lOL3pUtWxaFQkFERMTjY9HR0cTHx7+2vgYNGnDo0KGnjoWHh9OwYcMsx/TsUhU5iUcQzE0kBMFqKJVKxo4d+9TsZR8fH7p3787MmTOJiIggJiaGSZMm4ezs/Nr6xowZw7Zt21ixYgVxcXEEBQURERHBiBEjshTPrVu3uHTpEk2aNDFKPIJgbiIhCFald+/eXL58+am7hPnz51OpUiUCAwOpWbMmrVu3RqVSvbauhg0bEhwczIwZM/Dz8yM4OJjQ0NCn+v9fZdWqVfTo0QMbG5unjhsaj0ajQZIkGjRoAECZMmXw9vbOUiyCYBSyIFiZpUuXym3atHnl7/j6+sohISGyLMtyYGCgDMiAvGzZsiy34+Xl9bjc7t27n/t5QECA/M8//2SprtyIRxBy6IrNy1OFIFim3r178/XXX3P8+HFq1qz52t8/ceKEQe08evTopT87duwYSqWSqlWrZrteU8QjCMYguowEq2Nra8u4ceNeOHv5wYMHSJLEw4cP6d69+ytnBufEqlWr6NOnz2t/L7fiEQRjEFtoClYpMzOTsmXLsn79+iwvKGfMtosUKcKJEycoXLhwrrYtCCYkttAUrJOtrS0TJ05k4sSJud72jh07qFy5skgGQp4jEoJgtfr06cOtW7f466+/crVdsU2mkFeJLiPBqq1bt44ffvjhpQvfGVtCQgKlS5fmxo0bWRpKKghWRHQZCdatc+fOpKWlsX379lxpb82aNbRs2VIkAyFPEglBsGqSJPHll18ybtw4dDqdydsT3UVCXiYSgmD1WrVqhYeHBxs3bjRpOzdv3uTmzZu88847Jm1HEMxFJAQhT/jqq6+YOHHiU1tPajSaHG1FGRERwbx58x5PCFuxYgU9evRAqVTmOF5BsEQiIQh5Qv369SlRogSrVq1ClmU2btxImTJlOHv2rMF1RkZGMmrUKIoWLcpbb73FokWL6Ny5sxGjFgTLIhKCkGdMnz6dyZMnU7FiRfr168eDBw+4ePGiwfVpNBqcnJxIS0tj//79JCUl8fbbb9O5c2f27Nnz0r0PBMFaiYQg5AkXLlxg4sSJxMfHc+HCBRITE8nIyMjRHcKzm9okJyeTkpLCxo0bee+997h27VpOwxYEiyIWtxOsmlar5cMPP2T9+vWkp6c/NdJIp9MZvJDcf3W/6C7A0dGRkJAQSpcubXDdgmCJxB2CYNWUSiXdunVDqVS+cNjphQsXDK77RQ+kVSoVEyZMoG3btgbXKwiWSiQEweq1aNGCsLAw3N3dkSTpqZ9FRUUZPNLo2TsEJycnmjVrxvjx43MUryBYKpEQhDyhZs2aHD58GG9v76d2MHNwcODGjRsG1anRaB4nBKVSSeHChVm1apVR4hUESyQSgpBnBAQEcPr0aYoWLYq9vT2gn8lsaLfRkw+VXV1dCQsLw8nJySixCoIlEglByFMKFizIiRMnCAgIwMHBgZSUFM6fP29QXVqtloyMDFQqFTt27BDLXQt5nlWPMoqLiyMyMpL79+8TFxdHfHz8U32+KpUKFxcX/Pz88Pf3p2DBgigUIgfmdR4eHhw6dIjWrVtz4MCBp0YapafD7dvw4AE8fAiJifDk6FI3N/1X4cKQmKhBrVYzf/583nzzTTO8EkHIXVaz/PWdO3c4ePAgfx7+k2NnjnE94jo6hQ7bQrYoCirQFNCgs9WhVWnBFqR4CVvZFilGQvFAgea+hozoDPxL+1OxfEWa1m5K/Xr1qVy5sliKII9KS8ukTZseXLhwmcBa/3DurMSjR1CgoA4vXx3uPlpsbGXsnWSUNjIpiQqQISFGSVyUkjvXl6LTXaRW7W95s6aCRm9B/frg4mLuVyYIJnHVohPC0aNHWbNpDRu2biAuKQ5lAyWJdROhOhAAeGSzwgzgMnAOHA85YnfIDu1tLU2aN6HHuz1o27YtDg4ORn8dQu7RamHHDlizTmbHDvArrAGbr2jbdzjFAzT4FNLyzECkl7pz9RIuHm9w96o9V87YceWkPRdP2xJYA7p2kujSBdzdTfpyBCE3WV5CSExMZPHPi/lh6Q8kKBNI6ZaCtq0WKpmowWhgG7huckV3REfnzp35fOjnlCtXzkQNCqYQEwPzf5RZtBj8iml4s0UqbzZJx9XTuEtiZ6olTh+249guJ/7eb8+7bWHUSImKFY3ajCCYg+UkhLi4OL765isW/7wYXVsdqYNSoUYuB/EAlCuVOMx3oHZgbWZPmU3VqlVzOQghO5KS4OsZsGSJTN1WaTTrkYJ/ccNXOM2OlEQFezc7sn2Fijq1JYJmSLzxRq40LQimYP6EoNPpWLhoIeO/HE9G5wzSx6SDvzkjAjJAWiXhNM2J95q/x3fTv8PHx8fMQQnP2rABhn0qU71RGh0GJ+HubfoNcl4kM0Nizzontix2of9HEpMngeh5FKyQeRPCzZs36dS3E5dsL5E8PxnKmiuSl0gBuxl2OC13YvmC5bR7t525IxKA5GQY/LHMkRNaBnwZT6kKmeYOCYDEWAUrg9yIvmHPhnUSZS3tehaEVzNfQvjjjz/o3LczKRNT0A7WQhYf9JnFSVD1VNGvbT++m/mdGLpqRvfuQdPmMqWqp9FzVCK29hbR4/mU/b85EjzHjdWrJJo2NXc0gpBl5kkIS5ct5dMpn5KyMQVq5nbrBkoE527O1HesT+iaUGxtbc0dUb5z/Tq89bZMqw+SaN49xdzhvNK1c7Z8+4kn835Q0LmTuaMRhCzJ/YSw8teVfDz5Y5L3JkOx3GzZCLTg1MuJhhkNCV0T+tSaOYJpPXwIderJtOmfQKP30swdTpbcu27DVx96EfKrArENs2AFcjchHDlyhCadmpCyPwVK5larRqYB5w7O9C/fn+9mfmfuaPIFnQ7eaSJTpFoy7QckmzucbLly2pY5w704eVxCrHwhWLirudYZnpSURLse7UhZbuRkUAP98wcJWJ6Nct5PlNuTjXI2kLIqhaWblrJz585sFBQMNXeuTLImk/f6W1cyAChTJZPWHyTTq4/lPesQhGflWkKY9OUkklsnQxMTVD4BkIG+TxzbBJQDHICqQNgzZR4BSQa25wbJy5Lp90k/1Gq1gZUIWREXB1/PhH6T4rM8w9jStO6dzP1oLaGh5o5EEF4tVxJCVFQUS1YsIfWL1NxoDsKBbsBoIBLoArQBDN9v/Xn1IKlKEitWrjBipcKzvv9eP+HMr6j29b9soSQJun6ayNRp4i5BsGy5khCWLluK3FUGTwMryABGAL6AO9AU2PeK358BtAY+QN/mePRrH802sP2XSP40maAFQcatVHhMp4Ofl0HTrsYZUaTJzGT5zKn0q1eZXjUD+KJfV84fPwzAp23epmOAPx0D/Nmxehl7N6996vucqlxXTdQjmbNnc1yVIJhMriSE1b+vJq17DkaGjAK2ADuBh8BEoPsrfn8/UPeZY/X/PW5M9SEqLorbt28buWIB4Px5cFTp8C9hnKUoVgR9wdE9O5m0JJhfws/QafCnfDdiCADfb91L8+59KFisBO906Eqjdp0JbNSE+bvCafn+BzluW5LgzWZpbNuW46oEwWRMnhDS09O5dv6a4esSxQIL0X/KrwbYA2+h7wp6kaR/v55dacIXuGdgDK8gNZA4ePCg8SsWOHwY3qiWYZS6khPi2RWyko4Dh1GifEVs7eyoULMOSw/88/h3+o6ZgkKpZNmMKfy+fBE132lGwWIljNI+6F/LgUPmWV5DELLC5Anh/v372Be0B0PncV0CNEBWV5P8r5v22QeQ8guOGUFKqRRu3rpp/IoFbt8B70LGWZbi3o1raLUair7x8vUk7Bwc+HT2j+zdvI5zRw/RtEtPo7T9H98iGu7eNWqVgmBUJk8ICQkJKN1zsAFNdp/DuQIuQNQzx6MwyaJ5Ok8d0fHRxq9YID5BxsnFSA9iszjdpkChInj5+XP17CniY4z7/9XZRSYh3kqHSgn5gskTgqurK9qEHIwQKYd+o89z2SjTADj0zLFwoKHhYbyMIl6Bt5u38SsWcHOVSE02zhtooVJlUCptuH350it/b8m08Xz27QKKlC7LggkjjdL2f1KTJFxdxUgjwXKZPCH4+fmhvq8GQ3OCBzAY/cihU4Aa2AEUAl42+GQMsA1YAcQBQUAE+pFKRuZ004nChcQUVFMo5A9xD4yzPIjK1Y3m3XuzafE8blw4T2ZGBn/v/5P+DauhTtMPh/5ry3qKvhFAmcrVGBY0l4t/H2NXiPGGFUffV1LQX9whCJbL5IvxODk5UaR0Ea6eugqBBlYyG32kzYBkoAr6iWfOL/n9hkAw+tFIA9APOQ0FyhvY/itIByXqja9n/IoF3nwT5i2yM1p9fcZMQWljw7QPu5GemkLxshUYPe9n7B2dCPr4A46F7QKgRfe+hMz9hpTERBZ/MY5jYbuYtDQ4x+1fOWVHvdo5rkYQTCZX1jIaP2U8c9LnoA4ywazeGsDJf/97GU/PVn4VbyDm3//ejWEzqP8G/x7+3LtoguFLAhoNFCosMy0kGh9/652Y9p/R7xUgeIWSWrXMHYkgvFDurGU0+KPBKFcq9Z/uje0E+gfPzy5d8TqPnihn4HIaTj848dnAzwwrLLyWjQ306iXx5wYnc4eSY5f+scNWoRDJQLBouZIQihQpQsd3O2I/wz43mssd/4DjXkcG9R9k7kjytBGfQdh6Z+IfWfemROvnuTJponh+IFi2XPsr+/arb3FY7gDHc6tFE0oH1Ycqfpj5AyqVytzR5Gn+/jB4kMSKGW7mDsVg+7Y4gtqGbl3NHYkgvFquJQQfHx/W/LwGVTeVfvkJayWD4yBH2lZvS4/uPcwdTb4waSIk3rdnz3rr6zq6e82G4DluhKyWEDuvCpYuVy/RFi1aMHnoZFyauuj78K2Q/Wf2VLhdgV/m/2LuUPINOzvYtEHit59cOfmX9XQ7xjxQEjTYiwU/SpR9+QRpQbAYuf6Z5fPPPmdUj1GoGqjgSm63ngNqcOrrRIV/KrD39704ODiYO6J8pUQJ2L5NYulUD47ssvxzf/+WDdP6ejNxrCT2VBashlluYiePncyCiQtQNVIhbbaCB23XQfW2ihbaFhz645B4bmAmVarAX39KrJnjzubFKmQLXSfu9CF7pvX1ZuZ0BYMHW8H1LQj/ytU9lZ/1zz//0L5Xe6IDo0n9JhUKmCuSl9CCYpECpy+dmDllJkMGDkGy1m278pAbN1Jo3GQWKu/+DJlhR4FCljFHQZ0useFHF47/4cTaEIk6dcwdkSBkS+7tqfwi1apV4+KJi3xS9BOcKztjM9PG8G0tjUkGtoKqqoq6W+vyz4F/+HjQxyIZmJksy6xZs4ZGjcrT+J1Iur7ryOTuPmxc6EJ6qvn+38gyHN7lwIi2biTcPMjpf0QyEKyTWe8QnnT79m1GTRnFth3b0PTXkDEgA4rkchBpIK2XUH2roohjEeZ8MYfmzZvnchDCi1y4cIHhw4cTFxfHvHnzqF1bvwZEZCSMGy+zfSe07JlM486puLjnTl+SJlPiyB8O/L7UBR8PBZ+PvMWYMU3p2rUr06ZNQyGGFQnW5arFJIT/3Llzh9nzZrPi1xXIFWUSuyXq90M2VXeSGvgLnDY6IW+WqdegHhOGTaBRo0YmalDIjri4OKZOncqmTZuYNGkSH3300QvfaK9fh5lBMhs3QtX6at5smUqVuhnY2hn/8r52zpYjuxzZ/7sT1arCmM8lGjfW/ywxMZHevXujVqsJDg7Gw8PD6O0LgolYXkL4T2ZmJtu3b2flppXs3rkbZQklafXSUNdXQ1WgOIZteBMLnAXFIQUuh1xQH1JTsVpFerXrRfdu3fHxeXarNcEcdDodv/76K+PGjaNTp058+eWXuLq6vrZcUhKsXQvBa2X+OQnla2RSNjCdstUzKPqGBnuH7F3uOi08uG3D5dO2XDrpwNnDdri7S3TpBH37SBQv/nwZWZaZNWsWP//8Mxs3bqRSpUrZalMQzMRyE8KTtFotJ06cIPxQODvCd3DuzDliH8TiVNoJqZBEhl8Gai81GneNPknYABqQkiUcEx2xvW+L4r6C9Mvp2GBDmYplaFy7MW/VfYv69evj5ma9s2Dzov379zNs2DB8fHyYO3cu5csbtkxtXBzs2wd7/5IJPyxz+aKEu6eMX1Et7t5aXLy0OKh0KBSgUMrotBJpyQrSEhXERSt5dF/JvZsKCheFGoHQ+G2JRo2gZMmstR8aGsqgQYP4/vvv6dy5s0GvQRBykXUkhBdRq9VcvXqVe/fu8eDBA6KiotBqtZw+d5pbt2/RokkL7OzscHd3p2DBgvj5+VG6dGk8PT3NHbrwEpGRkYwdO5YjR44wffp0o7+JyjLcvAl37ui/Hj6EzEyIjdP/zNUFbG3B1xf8/KBoUShdWj8xzlDnz5+nQ4cOdOvWjalTp4qBCYIls96E8DK//fYbISEhrFmzxtyhCFmUkZHBwoULmTFjBoMGDWLs2LF5auJfXFwcHTt2xNvbmxUrVuDo6GjukAThRcw77FQQQkNDKVeuHHv27OHYsWNMnTo1TyUDAA8PD3bu3ImjoyONGzcmOlrswS1YJpPvmCYIL3L58mU+++wz7t+/z4oVK6hfv765QzIpOzs7VqxYwdy5c6lbty6hoaEEBASYOyxBeIq4QxByVUpKClOnTqVRo0Y0a9aM48eP5/lk8KThw4fz9ddf07hxY/bt22fucAThKSIhCLlClmVWrlxJQEAA9+/f58yZMwwfPhylUmnu0HJd586dWbNmDT169CAkJMTc4QjCY6LLSDC5kydPMmzYMOzs7Ni2bRuVK1c2d0hm16BBA/bu3UvLli2Jj49n8ODB5g5JEMQdgmA6MTExDB8+nA4dOjBw4ED+/PNPkQye8MYbb3Dw4EEWLlzI2LFjzR2OIIiEIBhfZmYmc+fOpWLFijg6OnL+/Hl69+4txuC/QMGCBfnrr7/466+/GDt2LHlsFLhgZURCEIzqzz//pFq1auzZs4dDhw4xc+ZMsX/Ea3h6erJnzx6OHz/O4MGD0eksdKMHIc8TCUEwijt37tC7d2+GDBnC7NmzCQ0NpUSJEuYOy2qoVCpCQ0O5ffs277//PpmZmeYOSciHREIQciQ1NZWpU6dSq1YtKlSowJkzZ2jRooW5w7JKTk5ObNmyBa1WS4cOHVCr1eYOSchnREIQDBYaGkrFihW5fv06p06dYsyYMdjlZOEfATs7O0JCQvD09KRLly7iTkHIVSIhCNl24cIFmjVrxrRp0wgODmblypX4+vqaO6w8Q6lU8ssvv+Ds7Ey3bt3QaDTmDknIJ0RCELIsLi6O4cOH06xZMzp16sTRo0cf71wmGJdSqWTVqlUolUr69esnHjQLuUIkBOG1dDodK1eupGLFioB+SecBAwaILSJNTKlU8uuvvxIbG0v//v3FkFTB5MRftPBK+/fvp3r16qxatYrdu3czd+7cLO1cJhiHnZ0d69ev58aNG3z66afmDkfI4/JlQqhRowaSJCFJEsuXL89yOW9v78fl9uzZY7oALUBkZCS9e/fmo48+YsKECezevfu5ncvEecwdjo6ObN26lX/++YeRI0eaOxwhD8uXCQFgwoQJyLJM3759nzq+adMmypUrh4ODA1WrViUsLOzxzx49ekRSUlIuR5q7MjIymDt3LtWrV6dkyZKcOXPmlTuXveg8vuocQv44j8bm5OTE77//zl9//UVQUJC5wxHyqHybEF4kPDycbt26MXr0aCIjI+nSpQtt2rTh4sWL5g4tVxhjs5r8fg5Nyd3dnV27dvHLL7+wcuVKc4cj5EF5NiFkZGQwYsQIfH19cXd3p2nTpq9df37GjBm0bt2aDz74AE9PT8aPH09AQACzZ8/OpajN4/Lly7Ru3ZopU6awYsUKQkNDcXV1pVOnTjg5OVG8eHHWrl2Ln58fkiQxatSol9aVX89hbvH29mb79u2MHz9edLcJRpdnE8KoUaPYsmULO3fu5OHDh0ycOJHu3bu/ssz+/fupW7fuU8fq16/P/v37TRmq2bxqs5qhQ4dy5swZjh8/zsmTJwkLCyMhIYGQkJBXvrnnt3NoDqVKlWL9+vX07t2b8+fPmzscIQ/Jkwnhv03bx48fT7Vq1bC3t+ett94iMjLypWWSkpJISkrCx8fnqeO+vr7cu3fP1CHnqtdtVhMdHU1ISAjjxo2jQoUKeHl5ERQURHp6+ivrzU/n0Nzq1KnD/PnzadeuHY8ePTJ3OEIekSc3yElKSkKj0TweN58V/43xfnaJZlmW89SyzVnZrOby5cvodLqnRhV5eHjg5eX1yrrzyzm0FB06dOD8+fO0b9+esLAwsWyIkGN58g7BkAk8rq6uuLi4EBUV9dTxqKgo/P39jRWa2WRns5qXnT+tVvvKNvL6ObREEydOpGjRogwaNMjcoQh5QJ5MCK6urtjY2HDu3LlslWvQoAGHDh166lh4eDgNGzY0Zni5ypDNasqWLYtCoSAiIuLxsejoaOLj41/bXl48h5ZMkiSWLl3K2bNnWbBggbnDEaxcnkwIdnZ2DB48mBkzZnDq1CnUajU7duygUKFCpKSkvLTcmDFj2LZtGytWrCAuLo6goCAiIiIYMWJELkZvPIZuVuPj40P37t2ZOXMmERERxMTEMGnSJJydnV9bNq+dQ2vg6OjIpk2b+Prrrzl27Ji5wxGsWJ5MCACzZ8+mXbt2NGvWDA8PD6ZNm8amTZte+abWsGFDgoODmTFjBn5+fgQHBxMaGvrcDF1LZ4zNaubPn0+lSpUIDAykZs2atG7dOkvJJK+cQ2tTpEgRVqxYQdeuXcVDZsFwch6zZcsWuWvXrq/8ncDAQBmQAXnZsmVZrtvLy+txud27d+cwUuNLSUmRp0yZIvv5+ckzZ86U1Wq1Uev39fWVQ0JCHn+fV8+jNZs8ebLcqlUrWavVmjsUwfpcyZOjjF7nxIkTBpWz5E9eoaGhDB8+nPr163Pq1Klc2Z8gL55HazdlyhSaN2/Ot99+y+eff27ucAQrky8TQl5y+vRphg0bRmpqKsHBwSbZn+DBgwcULFgQgO7du3PixAkx89hCKRQKVq9eTfXq1WnUqBE1a9Y0d0iCFREJwUrFxcUxdepUNm3axKRJk/joo49Mtj+Bn5+fWIvfihQoUID58+fTp08fTp48iaOjo7lDEqxEnn2onFeJzWqErHjvvfeoW7cuY8aMMXcoghURdwhWZP/+/QwbNgwfH58X7k8gCE/6/vvvqVq1Ku3bt+ftt982dziCFRAfK61AVjarEYRnqVQqli5dyqBBg0hLSzN3OIIVEAnBgmV3sxpBeFajRo2oV68e06ZNM3coghUQXUYWKjQ0lE8//ZTy5ctz7NgxihYtau6QBCs1e/ZsKleuTOfOnalevbq5wxEsmEgIFuby5ct89tln3L9/nxUrVjzen0AQDOXp6cns2bMZOnQo4eHhYuVZ4aVEl5GFeNVmNYKQU926dcPOzo7g4GBzhyJYMEnOAwPMBw8e/HhRr9TUVJKTkylQoAAADg4ObNiw4fHEKksjyzKrVq1iwoQJtGrViunTp+Pt7W3usIQ86NSpU7Rr146IiIgsLVQo5DtX80SXkb+/P+fOnSMjI+Pxsbt37wJQtGhRi00GWdmsRhCMpWrVqjRt2pRZs2bxxRdfmDscwQLliS6j3r17Y2PzfG6zt7fno48+MkNEr5adzWoEwZimT5/OTz/9xIMHD8wdimCB8kRCKFasGMWLF3/uuI2NDT179sz9gF7CkM1qBMGYfH19+fDDD5k1a5a5QxEsUJ5ICAADBw58rl+0ePHi2d4HICcePHjA8uXLX/gzQzerEQRjGzlyJKtXr+bevXvmDkWwMHkmIXTv3h2dTvf4eycnJwYMGJBr7aelpdGkSROGDBny1B+aMTarEQRj8vLyYsCAAeIuQXhOnkkIPj4+z/XDd+3aNVfalmWZbt26cf36dTQaDUOHDiU1NZWpU6dSq1YtKlSowJkzZ2jRokWuxCMIrzNixAjWrFnDw4cPzR2KYEHyTEIAGDRoEC4uLgBUqlQpVzaJARg9ejRhYWGkpaWRmZnJnj17KFeuHPfu3ePMmTOMGTMGOzu7XIlFELLCw8OD999/n4ULF5o7FMGC5Il5CP9JSEigYMGCKBQKfvjhB/r162fyNpctW8awYcNITk5+6njx4sW5evUqSqXS5DEIgiFu3rxJ3bp1uX79Og4ODuYORzC/q3nqDsHNzY0GDRqgVqvp2LGjyds7cOAAn3zyyXPJAPTbRC5atMjkMQiCoYoXL86bb77JmjVrzB2KYCEs9g4hLg7u34foaP2/o6IgKhoSEmUSEyExSSYuDjIyICVFgn9fxqNHm4iPW07pMr/rK5LA1hacncFFBa6uEi4qcHOT8PGGAgX0XwUL6v/t6wtZ+VB/5coVatSoQWJi4kt/R6VScevWLTw9PY1xSszu1q1bXLx4kQsXLnDp1iXuRN0h8kEkSQlJ6NCRnpyOg8oBBQrcPNwo6FuQogWKUrZ4WcqVK0dAQABFihQx98swGZ1Ox82bN7lw4QIXLlzgyt0r3H5wmwdRD0hKTEJGfuoceXh5ULBAQYr5FiOgZABly5alfPnyuTqR8q+//mLkyJGcPHky19oULJZ5ZyrHxsK5cxARARcvyVy9JnPjpsTtm+DgCO5eOjwK6HDz1KLy0KLy0OHspcOrmEwhZx2OzjIOTvpEYGMDDk46MjPe5OpZHeUCH5GZIaFO14/x12RKpKdIpCRJpCQqiE6RuHVTQeJJJYmxShJiFMQ8VJAQJ+HrB8VLyJQsIfFGaYkKFaBCBSheHCQJYmNjeeedd566M7C3t8fOzg61Wo2fnx+BgYG8/fbbVr0O/cWLFwndFsr2A9s5efgkuICynJLU8qlklMqAhoAvYA+4oX8ipQUSgXTgIRAJ9rfscdzliPaCFilNombdmrRp2IY2rdtQunRps70+Yzh9+jRbd2xlx8EdnDpyCqWXEkUFBSllU8gsmwlvAwUAO8Dj30IaIAlIA+7rvxyuOODwmwOZFzKxk+2oXa82rRu2pk3rNhQrVsxk8Tdq1IjU1FROnTpF1apVTdaOYB1y7Q4hKgqOHtV/HTqq4/xZCY0Wir+hwb9UJr7FNBQorMGvsJYChbXYOZjnxkWnhZiHSqLuKnl414aoO0ruX7fj1iUb4mIkSpXJ4MG9t4mKOoKNjR3FihXhzTffpEGDBlSvXp3KlStjb29vltiN4dq1ayxevpgVa1aQKqWS2SaT9EbpUBcwxhJLD4HD4PCnAzZbbXCzd6Nvt77079vfpG98xhQREcHCXxYSsj6ETJdM0tukk9EwQ3+O3I3QwD0gHBz3OqLYqqCAVwH69+hP3159TXL3MGPGDB4+fMj3339v9LoFq3LVZAnh4UP480/4Y7fMn3shJRXKVs6kRCU1ZSpnUiwgE1cP3esrsiAZ6RIHtp0k4vgt1Ck1uH+zMnHR9tSuC82bSjRtor+TsMaJx3v27GHirImcu3COzF6ZZPTKgHK50PAZsF9lj3K1ksBqgXw15isaNmyYCw1njyzLhIaGMumbSVy/dx11XzWZPTOhpKkbBk6Aw0oHpLUSDRs25MsxX1KzZk2jNXHv3j2qV6/O7du3rfrDjJBjxk0I587Bho0yGzbJPLgvUal2BuVqpVOpthrfIlpjNWNRUpMkIk7Yc/6IPeeP2pMYq6BtW+jcSeKdd8DSR5uGh4fTf0R/7mrukjQmCToC5hgYlQnSWglVkIpSHqVYMmcJNWrUMEMgz/vjjz8YOHIgse6xJI5JhNaAOZJ+OkgrJZy/caZK6Sosmr2IChUqGKXqli1b0r9/fzp06GCU+gSrlPOEcOcO/PyLzKpfQSvrqNkknVrN0ihZPtMqPynnVGyUkuNh9pwMc+L6BRvatIYB/SUsbWuD2NhYPhz2IXuO7CF5VjJYyvuADNIaCadxTrRr2o6F3y7E1dXVLKHcv3+fnoN6cuzaMZLnJEMzs4TxPC0oflHg+IUjvbv05tvp3+Lo6JijKtetW8fq1av57bffjBSkYIUMSwiyDKGh8MN8mdOnoUHbNBq+l0LRMhpTBGm1kuIVHNrhwL5NzmSmKxnYHwYNlDDT+9tje/bsoVu/bqT0SiF9crr+obClSQP7ifa4bnZl86rN1KtXL1eb37R5E/0+7kfa8DQyRmZY5t6CieA4whGvQ15sDdlKlSpVDK4qPT2dwoULc+XKFTw8PF5fQMiLspcQNBpYswa+niFj46SlRe8karytxsbWIkeuWpQbF2zZHeLM8T8dGNAfRnwm4eOT+3H88OMPjJ81npQ1KVAn99vPtr3g3MuZuV/N5cO+H5q8OVmWmfzVZL5b+R0pG1PAClYll36TcB7szMoFK2n/XnuD6+nWrRutW7emV69eRoxOsCJZTwh//gkffyKj8s6kXf8kytfMeH0h4TmxD5VsW6HiQKgjn4+Czz6Vcu05w5TpU5izfg7JW5OhcO60aRTXQdVaxReDv2DEsBEmbWrQp4NYfXI1yVuSwcukTRnXWXB+15mFXy2k1/uGvaFv2LCBVatWiW6j/Ov1CSE2Fj4aIPP3aR29xyZQtb46t4LL06Ijlaye7ca9y3b8ulKijok/rX83/zsmL55M8l4re6P7z31wbuTMD+N/oF8f0yxJMnbKWH4M+5HknclgjSuTXwPnd5wJnh/Mu23fzXbx1NRUihQpwo0bN8z23EYwq1cnhPBw6N5Dpm7bVDoOTkRpif2oVu50uD0/TXRn+CcSY8dIKEywmEh4eDjNuzUn5WgK+Bu//lxzA1T1Vezfup9q1aoZterQraH0+KwHyceTjTOXwFzOgEsLF/458A+lSpXKdvFOnTrRuXPnXFspWLAoL1/LaOMm6NBZ5sNpsXT5RCQDU6lST82MDdGs36qhzwcyWiOPzk1PT6dT306kLDdyMqiBfuilBCzPRjnvJ8rtyWabJSBlYQrte7VHozHeAIb4+Hh6D+pN8lojJwNznKPKkPJlCp0+6IQhAwibN2/O7t27s12uRo0aSJKEJEkv3STqRby9vR+X27Mnuy9WMLYXJoT1G2DoMB0Tlj6iUm3xrMDU3L10jP0phmv3M+jRU8aYUwVnfTeLpNpJ0Nh4dT42Af3Eqb7PHJ8L2AJXX1DmEfplGwwkvysTUyqGBYsWGF7JM8ZPG096l3SobrQq/+/ZcxQOtAFc0L/xtwbOPlMmh+dI10/HNe011q1fl+2yzZo1Y9euXQa1O2HCBGRZpm/fvk8dnzt3Lra2tly9+vwF8ejRI5KScvBiBaN6LiFcuQJDPpYZvySGwqXEMNLcYmsn89l3sVy6qeH7ucbJCJmZmcyZP4eUaSlGqe+10oHewDr06/WYSPJXyUyfM/2pHfIMlZiYyMpfV5I+Md0IkWVBY6AScAc4/e+xpkCsEduQIOmrJKbMnpLtosWKFcPJyYmLFy/mOIz09HR69+7NunXrjHpHJ5jOcwmhzwcy3T5NpFDJnP8PXDv/WzoG+NOtcnHOHDrA4MZv0qdWObYsXUByQjxfftSDHtVK80W/riTG/f8vQpOZyfKZU/mgbiW6VSnB5N6duHXpwuOf37t+laCPP6B3rQAGNApk5TdfodVkPv75ib9281nbd+hWpQSj2jflyO7tAMwb+ykdA/wZ27UNAOmpKXQM8KdjgD/H9ux8Luazhw/yScsGdCpXiKCPP8hSbDmhtIGhQXHMmAk3buS8vu3bt0MVwNAdOzOAEegXsHNH/8a17xW/fw7oBQQZ2F5WVQK1v5q9e/fmuKq169ZCC8DQBWmze458ga///d1CwBz06zsdMLD9l2kEkUmRnDlzJttFmzVr9lS3UXx8PJ06dcLJyYnixYuzdu1a/Pz8kCSJUaNGvbSec+fO0atXL4KCTH1BCMbyVEI4eRLuR+lo1D7VKJV3HTqScT+tQKfVcebwfr7dsptBX37DqtlfsWTaOD4YO5X5u8J5FHmP0GX/3ztg1eyvOH/sMDPWhPLLwdOUrFCJ6QN7kqnWj3D6efokmnR+n58PnuGLFRs4d+Qgvy9bDEBachLffjqQvuOm8uuJy4yY8xOrvvmKxLhYPpn5Pd2Hj37cjoOTMxsvRmLv6PRczFqtlkM7Q5ke/Buj5/2c5dhyytNXS+MuKfwwP+d3CdvCtpHY8uXLc7/WKGALsBP9m9ZEoPsrfr8G+jfEXJDUMomdf+7McT1bwraQ0ioHd1DZPUe3eHrZC7d//23s/WkkyGyZSdifYdku2rBhQ8LDwx9/P3ToUM6cOcPx48c5efIkYWFhJCQkEBISwuzZs19aT40aNWjaNJcuCMEonkoIq4NlGnVIMfqSE1qthlY9P8TJxZU6zdvgqHKhUInSFC79Bp4FfAls1ISbF88DkJyYwI7Vy+k27HP8ihbHycWVXiPHkxgXy+FdWwGY/HMIgY2aYGtnR8FiJWjQtgP/HNB/WoyLjiIjPR1Zp8PG1hb/EqX48Y9DuHpk7yOgTqul46DhuHp4UqtJC8b8uCxLsRlD406pGGPPkkN/H0J+08DEEgssBMYD1dDPZn4LiMx5XMagq61j/4n9Oa7n77//hjcNLGyMcxQGlMYkz3jS30xn74ns30XVrFmT48ePAxAdHU1ISAjjxo2jQoUKeHl5ERQURHp6LnWxCbnqqbFDFy7J1Opg/L4+pdIGT1+/x987OjtToPD/N0pxVLmQmqx/sHTv+lW0mky+HtT7uXruXrsCwOlD+wn+biZ3rlxCna7fb6BomQAAChYvSWCjJnz5UQ/8S5SiSafuNO78PipXt+fqe2XMNrZ4F3x6WE5WYjMGT18t6WmQnAyqHIyHfxT1CAxdLfkS+ucAFQ1v36QKQlRUVI6rSYhKMN85igemASsxzdIYBeF+1P1sFytevDjJycnExMRw+fJldDod5cuXf/xzDw8PvLyscTKL8DpPXYZpqWBnb/xlKBTK5wczKRQvWVLz3yE2M9dupUyV54d9JMQ8ImjIB7Tq1Y+py9biqHJhx+pl7ApZCYAkSYxbuIJ/9v/JjtXLWP1dEL//soigDdvxLljoqTb+o9M+nwQVihfcJr0mNmOyd5BJS5NylBC0mVrD32gsfTUSO9Bk5vzDi1ajNXx115ycoySgPTAd0y0hYqcfWGCIwMBAjh8/juolF6DW2OOjBYvw1Dt1mTISkTfNO+GgUKkyKG1sufmSB7V3r11GnZ5Gk87v46hyAUCT8fTQWEmSqP5WYyYs/pUFuw+j0WRy/M8/AHB0VpGS9P9+9bjoh2RmZG1o7etiM5b0VIn0tJyvdeTu7a4fwmiIcuiTybmcxWAyUeDpnfOtSV28XCDGwMKGnqN76Ieejgc6Gdh2VkRBAe8CBhWtWrUqZ8+epWzZsigUCiIiIh7/LDo6mvj4eCMFKViSpxJCi2YSx3Y5vex3c4XK1Y2W7/dl409zuXL6bzIzMrh27jRDm9fj0qmT+JcohY2tLTtWLyMtJZkHt2+yd8v/x1tfPn2SCT3a8eh+JFpNJgkx0WgyMylcsgwAxcqW4/7N61w4cZSUxERCly3GxtbWKLEZy6EdjrxjhD7liuUq/n9oY3Z5AIOBGcApQA3sQD8yJpdGsb7SKahWPuezlcuUK5O75+gM0AVYwP8fwO8BxhoYwysoTympUd6wPSVKlSrF9evX8fHxoXv37sycOZOIiAhiYmKYNGkSzs7ORo5WsARP3Q60awefjrDhyhlbylQ27FbzSTtWL2PplxMA6Bjgz8pjF+lbpwI6rZa5oz8h7lEUD27d5I+1qwDo/1Z1luz7m16jJqJQKJkxpC+pyUn4Fy9J9+FjKFs1EIDhs+ax+ruZhG0IoXTlqlSqXZ+tK5bQo1ppfj1xibfadWLG4N5E3ryOh48vPT4dQ6U6+g0JKr5ZjxY9+jJjSB+cXd0ZPO0bdoasIGhoP7oMHYmrh+dTMX80aTot3//g8Wt6XWw5lZkhsX2FihVLc/5kv81bbdgdtpuUnga+g89Gf4U0A5LRD2HdBLzsvUCDfkLaf8qgXzfJ0LuUV3D905WWnVrmuJ42b7Xh77C/yWhu4ATM7JyjdKA++u6iZ587jDGs+VdR/amiyeQmBpUtVaoUa9euBWD+/Pl89NFHBAYGUrBgQebOncuWLVteW4dGo8H2iQ9bZcqUwcvLi0ePTHBBCEbx3FpGO3fCgCE6vl4fhZPK0juS855lX7vhqnNk9aqcJ4T4+HgKvVGI1Cup/x/eaCw1gP9uipbx/Gzll/Hm/100uwFD3q+iQVVRxYPrD3L8SfX27duUq1OO1BupYOxVZ815jq6CV2MvHlx7gI1N9ruBb9++zTvvvPPC2cUAfn5+fP/993Tr1g3QDzE9eVL/YpctW/bcbOWX8fb2JiZG/2J3795NkyaGJTDBKK4+d6W0aAGdOkjMGe7J5/NjsXcUSSG3bF2u4vIxR04eN864X3d3d9q9244N8zaQOTHnd3xPOWFgOSN8OLT/xp5e7/cySrdF0aJFebPGm+xbtg/dQCPv8W3Gc+Q03Ylhg4YZlAwAChcuTGRk1sfPnjhh2IsVdwuW5YWrncoyDB0mc+CYhhHfx+LqaeQ/FOEpsgwbFrhwKsyZvWESfn6vL5NVkZGRlK1eluSjyVDMePWazSVwaeTCjXM3jDb08eLFi9R4pwYpZ1L0n86t3VHw7urNrYhbODkZ/kzQ3d2d+/fvP7U954MHDyhY8P/jdEeOHPnKyWmCVXnxaqeSBD/Ok+jc1oZxnX04f8zCd4q3YvExCmYO9OL+OWcO7DNuMgDw9/fn68lf49LNRb/MgjVLA1VXFT/M+sGo4+ADAgIYPnA4qt4qsPbPPnHg/L4zyxcsz1EyAHBzcyMx8emZ7n5+fsiy/PhLJIO85ZWr70+aKLEuRMHiiZ4s/cKdxDgTLNafT8k62L3OibEdC/Bec1v+3CPhbaJPp58M+YR3Sr6D40eO1vuGpwHnns50rNORvr36Gr36Lyd9SRVdFRxGGnsNiVyUBqpOKj7u8TGtW7XOcXVubm4kJCQYITDBWrz2Hb5BA7hwXqJyMUc+b1eA339RkZ5q5LUt8hFZhr/32zOusw9XDriy70+JCeNNszHOk9b+spaaj2ri2N/RpCuRmoQanHo60VDRkKXzlpqkCYVCwc4NOylztAz2n9tb/sS8ZyWDc3tn2pduz8wvZhqlSicnJ9LS0oxSl2AdsvQ2pFLBzBlw5JCE7oGK4S18Wf+jC4mx4o4hq7RaCN/uyNiOPuxY7M53QTbs+UOiXLncad/e3p6dG3fSML4hqtYq/bIJ1iAanJs409y2Ob8F/2bwQ9KsUKlUHNhxgKr/VMW5qzMYZ41H07sNzg2c6VG2B8sXLkcy0mJkGRkZ2OXWht+CRcjWO3qpUrByhcTJ4xJeODPy3QLMHeHJqYP2yNbaFWFi92/ZEPydKx839uX0DjcWzbPh5HEFrXN+R59tjo6ObF+/nUE1B+FczRlyvnq0aW0H5+rOfN7qczau3PjUmHZTcXNz48COA3Qt0BVVoAqOm7zJHJHWSDjXdmbmwJksnrsYhRFvNUVCyH9euafy66Smwvr1sHCxzM0bMjWbpFOzSRrla2TwsqWK8oP7t2w4utuBk2GOxEUp+bCfxIf9oHhxc0f2f/v27aNrv64kvZVE6vRUwxd4M4Xb4DzWGfeT7mxYsYHatWubJYxt27bRa1Av0tunkzYlTT/JzlJcBtUoFb63fdm8ajOVKlUyehNvvPEGYWFhFClS5PW/LOQFV3OUEJ5065Z+H+b1G2UuX4IqdTIo92Y6leuq8fHP2wthpaVInD9uR8QRB84cskejVtCpI3TsIFGnDiZ/PmCo1NRUpn8znbkL5qLpq0H9qdq8ieEOOHzrgM0aG8Z8OoZRn47CwcG8D3kTEhKY9NUkfvn1FzIGZZA5NNO8ieEqOM1ywibUhmkTpvHxoI9N1o1WoEABrly5gpubsWc1ChbKeAnhSVFRsGcP/LFbZvceUNjIlK2aQYlKGZSulEGJchpsbK3tqd3/Pbit5MoZOy6dTOX2pQLcuaakdl39WlBNGoMJPqyZ1IMHDwj6Logly5YgtZBI/iBZv65/biQyHbAbVMtUSH9JDO4/mFHDRuGT05X9jOzWrVt89e1XBK8JhnaQ+kEq1M2lxjOBHeDyiwuK4wpGDh3JsCHDTPpGrVar8fHxeW7YqZCnmSYhPOvaNThyBA4flTlyVOZihEShYjoKldJQqHQGRcpo8C+uwaeQFls7y0gUsgxxUUru31Zy96oN967acfeqLTcvKfH0gsDAFMJ2l+edd9ry3XeTKFLEyBMIzCAxMZGQNSHMXTaX23dvo2urI+3dNP36OzlYhvv5hoD94LjREWmXROlSpRnebzhdOnd56XLLliImJoZVq1fxwy8/EJ0UjeZdDelt0/VLWDu+tnjWxQF7QfW7Cu0OLZWqVGJ43+F06NAhV+6abty4QcuWLY2yt7JgNXInITwrMxMuX4Zz5+DsOTh9VseVKxJ3boGzi0zBIjoKFNbg7K7Fo4AWV08d7j46XN11OLnocHKRcXSWDbrLSE5UkJ4ikZoskZKgID5GQVy0kqRYBQmPlMQ+tOHhHSXRDyS8faBECZmKFSWqVJKoWBEqVID/PpglJyfz448/8v3339OnTx/Gjh2Lu7u7cU+Wmdy8eZPfQ38neFswZ46ewa6kHZpaGlLKp+iXfS6KflXPV60ekYx+qedbQASoLqhQHlGScSeD6nWqc+f8HSZPmsyHH36YC6/I+C5fvsyW37ewZvsaLvx9AYcAB9Q11KRVSIMA9OeoIPCq+WEJ6HdYuwnSeQnnCGcURxVoo7TUql+LHq170LZtW3x9fXPhFf1feHg4kyZN4s8//8zVdgWzMk9CeJWoKP0G87duwYMH8DAK7tyViYqSiYqSSEqG5CRISQZ1uoSDkwyyPpHI8h1kORUb27KP60tJktDpQKsBrUbC2UVGpQI3Nxl3D/DzkyjoC/4F9bOECxeGEiWgSBHIatdsdHQ03377LStXrmT48OEMHz7c7H3fxqTVajl79iwnTpzg9MXTnDh/grt37hL3MI6MtAxsnGywdbFFRkZCIiMxA22qFntnezx8PSharCg1ytegckBlatasSYUKFVAoFFy4cIEmTZrwxx9/UKFCBXO/zBzJzMzkn3/+0X9d0H/du3uP2PuxaDO1KB2V2DjagA36c5SQgTZNi4OLAx4FPChRsgSBAYFUKV+FmjVrEhAQYLTho4ZYvHgxp06dYsGCBWaLQch1lpcQsispCTT/TrRatGg+16/fYuzYb3BwgCeWYMHNzfQPd2/dusXXX3/Nrl27GD9+PB9++CFKZd4ebpWRkUFKSgqZmZkkJyfj4uKCjY0NKpUqS8NEN2/ezLhx4zhy5Eieubt6llqtZu3atWzevJlvv/0WV1dXlErl43NliYYMGULVqlUZMGCAuUMRcs+L1zKyJi4u4OGh/5LlJAoVUlGyJPj7//+4h0fujPQpVqwYixYtYuvWrezZs4dKlSqxfv16rDznvpKdnR0eHh4UKFCAkiVL4uPjg4eHR5bnDLRv354OHTrQtWvXPLsto729PRkZGfj7+1OyZEm8vb3x8PCw2GQAcOrUKapVy/kGRIJ1sfqE8KSkpCRcXFzMHQYVK1Zk3bp1LFmyhLlz51KnTh3++usvc4dlsb766itsbW2ZOnWquUMxmdjYWDw9c77lZ27QaDRERERQseKzu/gIeZ1ICCZUr149Dh48yIQJExg4cCBNmzbl1KlT5g7L4igUCoKDg9m0aRPr1q17fQErFBcXZzUJ4ejRo1SoUOGpZa+F/CFPJYT/+rAtTdu2bTl//jydO3embdu2dOnShWvXrpk7LIvi6urKxo0b+eyzzzh3Lru71ls+a7pD2LNnj9i5LJ/KUwnB0u4QnmRjY8OAAQO4dOkSgYGB1K1bl4EDB/Lw4UNzh2YxAgICWLBgAe3atctzO2lZU0IICwujcePG5g5DMIM8lxAsfWKTk5MTY8aM4cKFC3h4eFCpUiXGjh0rZoT+q127drz//vv06NEjTz1ktpaEEBcXR0REhNnWjxLMK88lBEu9Q3iWp6cnM2fO5J9//iEuLo6yZcsSFBSEWq02d2hmN3XqVOzt7ZkwYYK5QzEaa0kImzZtolWrVmKV03xKJAQzK1SoEIsWLeKvv/7i5MmTlC1blsWLF+epT8fZ9d9D5q1bt7JmzRpzh2MU1pIQ1q5dS5cuXcwdhmAmeSohWOpD5awoW7Ys69atY926daxdu5YqVaqwfv16c4dlNi4uLo8fMp88edLc4eRYbGwsHh4e5g7jlR49esQ///xD06ZNzR2KYCZ5KiFY4x3Cs2rVqkVYWBjff/89M2fOpF69ehw4cMDcYZnFf3dLnTt3tuqHzBkZGUiSZPHdMMHBwbRr1w57e3tzhyKYSZ5KCCkpKTg5vWolMevRpEkTTpw4waeffkq/fv1o2rQpZ86cMXdYua5t27b06dOHbt26odFY22bQetbSXbRkyRKxVEU+l2cSQkZGBra2tmZdEMzYJEmic+fORERE0LlzZ1q1akWXLl24ceOGuUPLVZMnT8bT05OxY8eaOxSDxMTEWHxCOHjwIAqFglq1apk7FMGM8kxCyAvdRS9ja2vLgAEDuHjxIhUrVqR27dqMHj2amJgYc4eWKyRJ4pdffmHnzp0sX77c3OFkmzXcISxevJhBgwaZOwzBzERCsCIqlYrJkydz/vx5NBoNFSpU4MsvvyQ5OdncoZmcSqVi8+bNjB8/nhMnTpg7nGyx9ITw4MEDdu3axfvvv2/uUAQzyzMJwZpHGGWXt7c3c+bM4cSJE9y9e5cyZcoQFBREWlqauUMzqTJlyrB8+XK6dOlCVFSUucPJstjYWLy8zLkR86v98MMP9OnTB1dXV3OHIphZnkkI+eEO4VmFCxdm0aJFHD58mOvXr1OuXDkWL15stQ9fs6JZs2Z8+OGHdOzYkYyMDHOHkyWWfIeQkpLCsmXL+OSTT8wdimAB8kxCSE1NzfIIoxo1aiBJEpIkZatP2tvb+3G5PXv2GBip8RUvXpxFixaxbds29uzZwxtvvMHixYvR6XTmDg0w/vkeP348/v7+jB492qLj/E9cXFyW5iCY47pcvHgxzZs3p0iRItkqJ+RNeSYhpKenZ2vbygkTJiDLMn379n18bNOmTZQrVw4HBweqVq1KWFjYU2UePXpEUlKSsUI2ugoVKrBu3TqCg4MtbnKbMc+3JEn8/PPP/Pnnn/z8888mjxNg7ty52NracvXq1efKvO66yM4dwrPth4eH06ZNG1xcXPD29qZ169acPXs2W+2/jFqt5vvvv2fUqFHZLivkTXkmIajV6hxNqAkPD6dbt26MHj2ayMhIunTpQps2bbh48aIRo8wdtWvXJiwsjO+++45Zs2ZRp04d9u7da+6wnpLT861Sqfj999+ZMmUKx44dM1mc6enp9O7dm3Xr1hncFZeTLqPGjRtTqVIl7ty5w+nTpwFo2rQpsbGxBtX3pKVLl/Lmm2+KjXCEx/JcQoiPj6dTp044OTlRvHhx1q5di5+fH5IkvfKT0IwZM2jdujUffPABnp6ejB8/noCAAGbPnp2Lr8K4mjRpwrFjxxg/fjyffvopTZs2NdkyEBkZGYwYMQJfX1/c3d1p2rQp+/bte+nvG+N8Fy9enOXLl9OpUyciIyONHiPAuXPn6NWrF0FBQVmO61n/JQRD2vf19eXrr7/G3d2dQoUKMWfOHB4+fJjj2etqtZpZs2YxceLEHNUj5C15LiEMHTqUM2fOcPz4cU6ePElYWBgJCQmEhIS88s1m//791K1b96lj9evXZ//+/aYO3aQkSaJt27b8888/DBgwgG7dutG2bVujz3oeNWoUW7ZsYefOnTx8+JCJEyfSvXv3l/6+sc53kyZNGDp0KJ07d37tQ+bsxgj6fv2cru3zX0IwpP1bt249NdnSzc0NIFvdoy+yZMkSateuTeXKlXNUj5C35JmEkJ6ejk6nIyQkhHHjxlGhQgW8vLwICgoiPT39lWWTkpJISkrCx8fnqeO+vr7cu3fPlGHnGoVCQefOnTl//jzNmjWjVatWfPjhh9y6dSvHdcfGxrJw4ULGjx9PtWrVsLe356233nrpp3Zjn+/PP/+cokWL8tlnnxktRmOKjY1FoVAYpf2wsDBKly6dow1sUlNTmTVrFpMnTza4DiFvyjMJQa1Wk5KSgk6no3z58o+Pe3h4vHYMuCzLAM8teyHLcp5aCgPAzs6OTz75hEuXLlG6dGlq167N0KFDc/TGeOnSJTQaTZb7oo19vv+byXz06FGWLFlilBiNKSYmhujo6By3Hx8fz7Rp01i5ciU2NjYG1zNnzhyaNGlChQoVDK5DyJvyVEKwtbV94c9et7eAq6srLi4uz012ioqKwt/f32gxWhJnZ2fGjRvHlStXKFKkCNWqVWPgwIE8ePAg23X99wafVaY4346OjmzcuJGpU6e+sH89uzEai0ajQavVvvTazKqkpCTat2/P9OnTqVOnjsH1REdHM3/+fKZOnZqjeIS8KU8lBH9/fxQKBREREY+PR0dHEx8f/9ryDRo04NChQ08dCw8Pp2HDhsYO1aKoVKrHW3oWLFiQatWqMXbs2GyNYilXrhw2NjacO3cuy2VMcb6LFSvGypUr6dGjx3NdT4bEaAz/7YOQk/bv3btHmzZtGD9+PJ06dcpRPF988QX9+vWjaNGiOapHyJvyVELw9PSke/fuzJw5k4iICGJiYpg0aRLOzs6vLT9mzBi2bdvGihUriIuLIygoiIiICEaMGJEL0Zufp6cnU6dOfTzGPSAggLFjx2YpmXp4eDB48GBmzJjBqVOnUKvV7Nixg0KFCpGSkvLCMqY6340bN+azzz6jU6dOT21HakiMxvDfA2VD2z9z5gxdunRhwYIFjx9u79mzx6CVX69fv87mzZsZM2aMwa9HyNvyVEKwt7dn/vz5VKpUicDAQGrWrEnr1q1RqVSvLd+wYUOCg4OZMWMGfn5+BAcHExoa+tTziPzA29ubmTNn8vfff5OWlkaFChWYOnUqiYmJryw3e/Zs2rVrR7NmzfDw8GDatGls2rTppcnYlOd7xIgRlCtXjoEDB+YoRtB3+UiSRIMGDQD9ekre3t5ZjuXJdYyy2356ejr169fn0KFDVKxY8fFsZENHPY0ePZoxY8Y8HqkkCM+R84ihQ4fKixcvfuHPfH195ZCQkMffBwYGyoAMyMuWLctyG15eXo/L7d69O6chW4WbN2/KAwYMkP38/OSZM2fKqamp2a7DHOc7LS1Nrlmzprxw4UKzxhkaGip37NjRbO3/58iRI3LJkiXl9PT0LNcr5DtXDB+qYGGyM1PZ0OWTrXkbR0MVK1aMRYsW8dlnn/H1119Trlw5PvvsMwYNGmTR59vBwYENGzZQp04dypcvn6VnE6aIMzuzlE15nkaOHMmMGTPE9pjCK+WpLqNnJ+s8ePAASZJ4+PAh3bt3F2u25EBAQAArV65k27ZthIeHP97v2JJXVi1atChr166lZ8+e3L171ywxWMJKp5s2bSIzM5POnTubNQ7B8uWphPDspx8/Pz9kWX78Zc3LUFiK/xbQW79+PZs3b6ZixYoEBwe/dmivudSvX59Ro0bRsWPH105QNIWsrnRqKmq1mnHjxvHNN9/kuTk1gvHl6YQgmE7NmjXZsWMHP//8M8uWLaNixYqsXr3aIhPDsGHDqFy5Mv3798/1ts19hzBz5kwCAwPz/PBpwThEQhBypF69euzevZtffvmFNWvWPN6LwdK6khYsWMDt27eZNWtWrrZrzoRw+fJlFi5cKO6MhSzLMwkhPT1dJAQzqlOnDqGhofz666+EhoZa3DMGW1tb1q1bx4IFC9i6dWuutWuuhCDLMoMHD+bLL7/Ms7PtBePLMwnhRQ+VhdxnyYnB19eXzZs3079/f86fP58rbcbExJglISxatIjMzEw++uijXG9bsF55KiGIOwTLYamJoVq1asyfP5933303V4YRm+MO4fz580ybNo0VK1aIB8lCtoiEIJiUJSaGjh070r17d7p3727yOHI7IaSnp/P+++8ze/ZsSpQokWvtCnmDJMtmWgYyhx4+fEh8fPzjVSQbN27Mli1bHi/aZWtrm6UlK4TcdfjwYb7++msiIiIYM2YM/fr1y9FSzoaSZZmuXbtSqFAhvvvuO6PVe+TIEW7duvV4/aIGDRrw8OFDXF1djdbGqwwePJjMzEyWLl2aK+0JecpVq126Yt++fbJSqZQ9PDxklUolOzs7yy4uLrKLi4usUCjkyZMnmztE4RUOHTokt2nTRi5ZsqS8aNEiOTMzM9djSEpKkitVqvTSJU8MsXLlStnOzk728PCQPTw8ZGdnZ9nR0VFWKpWyq6urvHnzZqO19axly5bJFSpUkJOTk03WhpCnXbHahKDVamV3d/fHa7g8+eXs7CxfunTJ3CEKWWDuxHDjxg3Z399f/uuvv546buhaVffv35ednJxeeF26uroatBZUVoSHh8sFCxaUr1y5YpL6hXzBehOCLMvyhx9+KCsUiuf+8CpWrGju0IRsOnjwoNy0aVO5bNmy8sqVK3M1MRw4cEAuUqSIfPv2bVmn08ljxoyRJUmS//77b4PqK1as2HPXpJ2dnTxy5EgjR6538+ZNuVChQnJYWJhJ6hfyDetOCHv37pXd3NyeuztYtGiRuUMTDHTw4EG5RYsWcqlSpeQlS5bIarU6V9r98ccf5apVq8rNmjWTXVxcZKVSKQ8YMMCguoYNGyYrlcqnrksnJyf59u3bRo5alhMSEuQqVarIP/30k9HrFvId604IWq32uYTg5OQkx8XFmTs0IYdOnTold+7cWS5WrJj8/fffm6yr5T93796V/f39ZUdHx6e6eDIyMrJd165du566LiVJklu1apXjGBcuXCjv37//8fdpaWny22+/LY8aNSrHdQuCbO0JQZZluW/fvk91GxnjD0+wHGfPnpV79eolFyxYUJ45c6ackpJi9DYOHToku7u7P/ep3s3NTf7tt9+yXV9aWprs4ODwVGIJDw/PUYzJycmym5ub7OLiIh87dkzWaDRyp06d5J49e8o6nS5HdQvCv65Y/TyEXr164eLiAoCbmxsff/yxmSMSjKlixYqsXLmSAwcOcP36dUqVKsXUqVOztLVnVpw+fZq33nqL+Pj45xbmS0hIYP78+dmu08HBgUqVKj3+vkCBAtStWzdHcX7//fdoNBqSkpJo3Lgx3bp1Q61Ws2zZMjH5TDAec6eknNJoNLKrq+vjT2LmGL4o5J4bN27Iw4YNk318fOQxY8bIsbGxOa5z//79csmSJWUXF5fnHgY7OjrK0dHR2a5z5syZsoODg+zi4iKvWLEiR/ElJSU9vsb5twtKpVIZ/NBbEF7C+u8QlEol7dq1Q6FQ0KtXL7NMchJyT/HixZk7dy4nTpwgLS2NsmXLMnz4cB48ePDKcgkJCS/9WYMGDbh06RJTp07FxcUFOzu7xz+TJIk1a9ZkO84WLVogSRIKhYKuXbtmu/yTZs+e/dTdiyzLpKSk0KxZM27cuJGjugXhSVabEGJj4fx5OHkSqlXrjU6no06d/pw8CbdvQ0aGuSMUTKlo0aLMnTuXc+fO4ejoSOXKlRk+fDiRkZHP/e7Zs2epVKkSt27deml9NjY2jBgxgkuXLtG2bdvH3ZCpqan8+OOPr40nLQ2uXtVfj4cPQ1RUZZRKO9q3H8KNG/YkJxv2OhMSEpgzZw4pKSlPHZdlmdjYWOrVq8e9e/cMq1wQnmHxS1ekpur/wA4elDl1Fs6dg7u3JVSuMh5eOpxUMja2mVw534Y3Ku4kJUkiNVnBw0gJlQreCJCpWF7izVoSDRpAmTLmfkWCKURHR/Pjjz+ycOFC3nvvPSZNmkThwoUBeO+999i6dSteXl4cO3aMYsWKvba+vXv38sEHHxAbG0t6ejqnT5+mXLly6HRw5gzs3w9/n5I5cxauXwWdDN6++uvR0UlGBm5dGYC37zQyM/yJiVKQoYZSZWQqlJeoXk2ifj2oWRNedVM7YcIEvvvuO9LS0p46rlKpcHFxYcqUKfTp00es9CsYw1WLTAiRkbBxE6zfqOPU3xJlKml4o7qaIm9kUrysBp9CGpTKp8s8uh+Jd8Gn131PTlRw75oNt6/YcOOsHREn7MlMl3i3HXTuKPH22zxXj2DdYmJimDdvHj/99BPNmjWjT58+tGvXjpSUFBQKBV5eXhw5coSSJUu+tq7MzExmz57N1Klf0KLFJzg4zeKPP8DbT0e5GmqKl8+gSBkNhUtqsHd8/s8o/lEU7t4F/l9fhkTkDRvuXLXh5gVbLv9tz51rShq+BV06Sbz7Lri5PVE+Pp6iRYuSlJQE6LuvVCoVxYsXZ9KkSXTo0AGluIAF47GshLBrF8z7UebIEajVJJ2aTdKoUCsDG1vjhfjovpJjexw4sceRqLs2DOgPgwdJ+PoarQnBAiQkJDBv3jzWrFnD5cuXyczMBMhWUrh8WX89rl59Dwfnb+gwcDI1G2twcdcZLc70VIm/99tzMsyJ04fsaNsGhn0iERgIo0aNYv78+Wi1Wuzs7KhVqxZff/01derUMVr7gvAEy0gIW7fCpCkyap2WZu8nU6d5OrZ2pg8r8oYNu9c6czDUkZ69YMI4iQIFXl9OsA53797ljTfeeK675XVJ4dIlmDxV5q99Mk27pvJOpxTcvY2XBF4mJVHBvt8c2fWritKlHnHoYFFApk+fPowbN04sZy2YmnkTwvXrMGiIzK17WroMT6RaA7VZ4kiMU7B1mYr9W5yYMlli0CDRlZQXDBgwgBUrVpDxghEGL0oKqanw5Vew9BeZdh8l0aRzKnYOuf/nodXCD6N/4fRBeLftYH6Y64mZtmUW8hfzJYRffoGx42XeG5BEs24pKCzgDfj+LRt+meaGk9KWNcEShQqZOyLBUFFRURQtWhQ7Ozu0Wi2pqanP/Y5CocDHx4cjR46QkFCczl1lSlRW031EAq4epr8jeBVZpyNDrWTDjy4c3uHErysl3nnHrCEJeV/uJwSNBvoPkDl8Usuw2XH4FTX/XrtPkmXYtkLFjhUqNm2UEN211iktLY0rV65w+/Zt7t69y+3bt7l48SI3b97k/v37xMTEYGtri1qtxtXVF0l5kI+muPNm03Rzh/6cCyfs+HGcB59+IjH6czErWTCZ3E0IajW8+55MKhkMDYrD1t7sjy9e6vwxO+Z97smKZRItW5o7GsEUHj16xMygOyxfeYfOnyTTtPPb5g7ppeJjFMwa7EWLxkq+nyOSgmASuZcQtFro2FkmWUpn8FfxSFYwJe7GBVuCBnmxeaNEvXrmjkYwtl+WwRdfaZmy8lGuPDTOqfRUia/7e9GhtQ3TvhBJQTC6q7n2tjx5CtyPy2Tgl9aRDABKlMtk+LexdOwk84IJsIIVO3wYxk/QMW5JjFUkAwAHJ5nRC2JZFaxjwwZzRyPkRbny1nzwICxboePjoDijjN5ZO/9bOgb4061y8ZxX9hrlamTQqk8yPXrKmH+ArmAMycnQ/X2ZgV/FU6CQ9vUFLIjKTcewObEMGSojVqwQjM3kCUGng48/kek7IQGVm3E+iXUdOpJxP60wSl1Z0bpvMtHxWjZvzrUmBROa9Y1M2RrpVKlnnmHOOVXsDQ3NuqcwZpz4hCIYl8kTwpYtINlrqPG25Y3eyCpJgu4jEhg/UfwBWruEBPjxR+j8SZK5Q8mR1n2T2bNH5soVc0ci5CUmTwgLFsk0e9/ApR6z4Ozhg3zcrC69agaweOpYTPWMvHzNDHQKHYcPm6R6IZesDoZqDdV4Fsh5V9GTXZdnDx/kk5YN6FSuEEEff8Dl0yfpGOD/3FfQ0H5GeBVg7yDzVvtUlv5slOoEATBxQkhJgWNHocbbprk112l1/L3/T2Zt2Mm4Bcv5Y+0qzhw+YJK2AGq3SmXjJpNVL+SCjZtk6rR6fpKaIf7rutRqtRzaGcr04N8YPe//79AdBw1n48VINl6M5IsV63F0VtFr5ASjtA1Qr3UaGzeJu1bBeEy6m8zRo/BGRY1RF6d7klaroU2f/ji7ulK+Zm0KlSzN7UsXqFK3oUnaKxeYwZbvdVjxNhL5mk6n36/gg5nG3SxDp9XScdBwXD08qdWkBbWatADgjSqBACQnxPPDmGH0GTMF/xKljNZuoZIa4uLg0SPw9jZatUI+ZtJ3tuvXoWCJTJPVr1Ta4OVX8PH3zq5upKaYrnuqUAkNN2+I8d/WKiYGHBxknFTG/YCitLF9bun1Jy2c9DmlK1WlaZf3jdquJEHhElrEpmmCsZj0DiE+HpxcTTfGW6F8Op+ZerNxZxcdiQkiIVir+HhQuRn/blWhePk1EbYhhMunTjDn9z+N3i6Ai7uO2FiTVC3kQyZNCI6OkJGed7pXMjKkfzdCEUnBGjk6QoY69/7f3b91g2UzpjBm/i+4uHuYpA11moSzs0mqFvIhk75bFygACdEWsIypkcRFKfH2MXcUgqG8vSEuRkLOhYnJWk0m340cQrOuvahUp/7j41M/6GLUdmKiFGIPD8FoTJoQatSAy2dsjV7vjtXLmDGoD5kZGXQM8CclMZFPWjbg4t/HWTf/W+aN/dTobQJcPmVLrZomqVrIBQ4OUKQo3L5qnBvjZ6/DHauXPf7ZX1s2cO3caX77ZeFTw06j7901StsAqckScY8UlC5ttCqFfM7ki9sVLS4zasEjCpeyrGWuDTF/tAe93nPggw/MHYlgqGGfysTbJvPeR6YbfJBbDm5z5Mo+N0J/E12YglGYfnG7D/rC3o1Opm7G5JLiFZwKt6dTJ3NHIuREv74S+zY55Uq3kant2+TMR/1EMhCMx+QJYfAgiQOhTsRGWfezhN+WuNCrF7i4mDsSISeqVoXiRRUcCHU0dyg5EnHcjoQoG1q3NnckQl5i8oTg5wcfD4FfZ7mauimTuXPVhoOhjkyeKD6N5QXffSux9gdXkhOscwScJlNi5Uw3vgmSsDHpOEEhv8mVv4gJ4yXi7trz1xbr+1SmTpf4YZQnP/wg4eVl7mgEY6heHfr2VrB4srtVLmm++ltXqlVS0r69uSMR8ppcSQh2drBhncTa7904e8QuN5o0Cq0Wvv/Mk+aNFXTrau5oBGOa9gUo0u0I/ta67lx3BTtz+ZgjSxaJu1XB+HLtnrlMGfh9i8SPYzw5fcg+t5o1WKZaYu4ITwp72jJvrvjjy2tsbWHr7xJXTzgR8p2rVdwp/LHGmXXz5jP3u9O4WlceE6xErnaivvkmbAuVWDzRgz3rLXfkUVy0gq8+8qJ0QTvWrpGMssubYHlcXWHfXokHF5xYMNYDdbplJn6tFlbPdmXfOhUjPnNh8OCONG7cmO3bt5tsuXchf8r1p2o1a0L4AYkjm12Z97kHyYmW9WDv5F/2jOvsQ89ONiz7RTy0y+vc3WHPHxKl/OwZ39mHGxHGn0iZEw/vKPmitzeZ0U4cDlcwadInXLlyhU8//ZTvvvuON954g7lz55KaapwlvYX8zeQT014mIwMmTZZZtkKmyydJvN0+FcmMuSHqnpJfZ7kRfcuOlcsl3nzTfLEI5rFpk36715pN0ug0NAmVCRdmfB11usTWX1TsCnFm2lQYMuTFdy8nT55k7ty57Nmzh969ezNs2DD8/V++8qogvILpJ6a9jJ0dBM2U2LtHQcSfrox8twD7Qx3R5vKE5od3lCyZ6s6kbj6829iOc2dEMsivOnSAixESJTwd+axVAdbNdyExLnf/RNJSJLYuVzG8RQEU8c6cOyO9NBkABAYGsnLlSsLDwwGoVq0avXv3JiIiIrdCFvIQs90hPCs8HKZ9JfPPKZlG76VRv00qhUubJjuo0yX+3mfPvk3O3L5ky5Ah8OlwSTyoEx67dw8+/ewIYWGlqNbAhQbtUqnwptokz5NkGS6ftmPfJgXH9rjTshVMnihRtmz264qPj2fRokX8+OOPVKlShc8//5yGDU2zYZSQ51y1mITwnxs3YMlSCFkjIyt0VH8rnYAaGQQEZhh8Cy/r9AuaRRy35+Jxe84etaNOXZkP+ypo104/4kQQnnTgwAG6du1KcPAWLl2uxYpVMhcvQPWGasrVSqdcYAZ+RQ3flzn2oZKIE3ZcPGnP33vtKeCbwcPIaqxZE8zbb1fLcfyZmZmsWbOGWbNm4ebmxtixY2ndurXJ9wwRrJrlJYQnnTkDu/6AsL0yRw+Do7NM0TIafItocPXR4llAi629fgcshQLS0yQ0mZAQoyAxRknsAxvuXrXl7g0FhYtAo0bwTiOJFi3EEhTCy4WHh9OpUydCQkJo1KjR4+MPH8L27frr8eBBiIuDEm9oKVgiE/cCGtx9dDi76rBzkLGzA02m/ppMT1UQ+0BBYowN92/YcOOSDfZ2UL+B/nps2RKKF4edO3cyYMAAwsPDKVKkiFFeiyzLbN26lRkzZpCcnMyoUaPo0aMHNmK0hPA8y04Iz7p3D86f12/NGXkfIu/LxMdDYuJV7tz5nYByn+HsJOHpCUULSxQqBAEBUK6cfuljQXidlyWDF0lMhIgIuHRJf23ei5S5/yCGixcWULzkROztwM5OwtMD/PwkihaBkiWhUiXw9HxxnUuWLOGHH37g4MGDuLm5GfW1HTx4kKCgIM6fP8/w4cMZMGAAjo7Wt3qAYDJXkfOA8PBw+Z133jF3GIKVO3jwoOzn5yfv3bvX4DpOnTol16pVK0dxDB8+XG7ZsqWcmZmZo3pe5tSpU3KvXr3kggULylOmTJHj4uJM0o5gda5Y1iQAQTCT7NwZvEpsbCyeL/v4n0Vz5szBzs6OkSNH5qiel6lSpQorV67kwIEDxMXF8cYbbzB8+HAePHhgkvYE6yESgpDvGSsZgHESgkKhIDg4mCNHjjBv3rwc1fUqpUqVYu7cuZw4cQKAypUr8+mnnxIZGWmyNgXLJhKCkK8ZMxmAcRICgJOTE1u2bGHOnDn8/vvvOa7vVYoWLcrcuXM5f/48zs7OVKtWjU8//VTcMeRDIiEI+ZaxkwEYLyEAFCxYkNDQUIYMGcLp06eNUuer+Pj4MH36dCIiInB3d6dy5coMHDiQ+/fvm7xtwTKIhCDkS6ZIBgBxcXF4eHgYrb6KFSuyZMkS3n33Xe7evWu0el/Fy8uLqVOncuHCBQoWLEj16tXFM4Z8QiQEId85dOgQnTt35n/tnXlYE9f6x78JBJLMJIjsi6K4AIri1qu4oFVxw61Wca2t11Zve22t+1artVfFarXee7Vaf7dWb9XWrYtWraJVKwhaNxAQ1yoFBWRHEkKS9/dHhCuIEJKZTKD5PM/7KJPMnPd8c+a8c2bOvGffvn2cBgMAyMnJ4WyEUM7gwYMxZ84cjBw50qJJ7MoDQ2JiImQyGdq3b4+ZM2ciMzPTYj7YsCy2gGDjT8WVK1cQGRmJ3bt3o2fPnpwfn8tbRs/y3nvvoWvXrnj99dctnvLa1dUVUVFRSEpKgkwmQ7t27bBw4ULk5uZa1A8b/GMLCDb+NFy7dg0RERHYtm0b5yODcvgKCACwceNG5OXlYdmyZbwcvzbc3NwQFRWF69evAwACAwOxcOFC5OXlCeKPDe6xBQQbfwoSExMxePBgbNu2DYMHD+atHD4Dgr29Pfbt24e9e/di9+7dvJRhDO7u7oiKisLly5dRVFSEoKAgrF692rYmQwPAFhBsNHhSU1MRERGBLVu2ICIigtey+AwIAODs7IwffvgBc+fORVxcHG/lGIOvry82bdqE+Ph4pKamIiAgAF988QW0WgvnsLfBGbaAYKNBc+vWLYSHh+OTTz7B8OHDeS+P61lG1REQEIAdO3ZgzJgxSEtL47UsY/Dz88NXX32F48ePIzo6GsHBwdi3b59tec96iC0g2Giw3L9/H4MGDUJUVBTGjRvHe3mlpaWwt7eHxAL51MPDw7FgwQKMGDECT5484b08YwgKCsLevXvxxRdfYP369ejevTvOnj0rtFs26oAtINhokKSlpaFv375YtGgRJkyYYJEy+ZhyWhMzZsxAaGgoJk+eDL1euOU+qxIWFobY2FjMmzcPb731Fl599VXcuXNHaLdsGIEtINhocPzxxx/o27cv5s+fjzfffNNi5fL9/KA6Nm7ciIKCAixfvtyi5daGSCTCqFGjcP36dQwcOBBhYWGYOXMm8vPzhXbNRg3YAoKNBkVWVhYGDhyIWbNmYfr06RYtW4iAYC0zj16ERCLBtGnTKl5ua9OmDTZu3Gh78Gyl2AKCjQZDdnY2Xn75ZUybNg3vvPOOxcsXIiAAlWceXbx40eLlG0Pjxo0RFRWFkydP4ueff0bHjh1x5swZod2yUYU/XUDo0qULRCIRRCIRvvrqK6P3c3V1rdgvOjqaPwdtmERBQQEGDRqESZMmYebMmTV+l682YGxA4KP8gIAA7Ny5E6NGjeI0fTXXvgYFBeHIkSNYs2YNpk6dismTJwuSCsPWD1TPny4gAMCSJUtARHjjjTcqth08eBBBQUGQSqXo0KEDTp48WWmfx48fo6ioyMKe2jCGkpISDB8+HGFhYVi0aJFR+/DRBuoyQqiufMDwTEAikeD27dvP7VNb+f3798eMGTMwZswYaDQao/wwxdeYmBgMHToUCoUCrq6uiIiIQGJiYp18HTJkCBITE+Hv74+QkBBs3LgROp2OM5+NgY/foL7zpwwIVYmJicG4ceMwf/58ZGRkIDIyEkOHDsWNGzeEds1GLWg0GowePRrBwcHYsGGDycfhog2Y8w6CWq3G5MmTsXfvXrPur8+fPx9NmzbFrFmzTD5GbfTr1w/t2rVDWlpaRVru8PDwOuc2kslkWL58OWJiYnDs2DG89NJLiI+P58Nlo+DqN6jPNKiAkJ+fj9GjR0Mul6NZs2b49ttv4enpCZFIhLlz575wv9WrVyMiIgJTpkxB48aNsXjxYgQGBmLdunUW9N5GXdHpdJg0aRJcXFyeW1lMo9Fg9uzZ8PDwQKNGjRAeHl7jPWsu2sCzI4S6ln/9+nW89tprWLNmjdHlVYdIJMKXX36J+Ph4bNu2rdbv19VPAPDw8MCqVavQqFEj+Pj4YP369cjMzMSvv/5qks8tWrTA0aNH8dFHH2Hs2LGYPHkycnJyTDoWYHo/wNVvUJ9pUAFhxowZSEhIwMWLF3Hp0iWcPHkSBQUF2LNnT40n9tmzZ9G9e/dK23r27Gl7qcaKISJMnz4dGo0G27dvh1hcuSnPnTsX33//PY4dO4bMzEx88MEHGD9+/AuPx0UbeDYg1LX8Ll26IDw83OiyakImk+HAgQNYvnx5rZ10Xf0EDC/8iUSiir+dnJwAAFKp1Cy/hw0bhqSkJPj7+6Njx47YuXOnSW87m9oPcPkb1FcaTEAoKyvDnj17sGjRIrRt2xYuLi5Ys2YN1Gp1jfsVFRWhqKgIbm5ulbZ7eHggPT2dT5dtmMGcOXNw//59fPPNN7C3t6/0WW5uLj7//HMsXrwYHTt2hKOjI3r37v3Ch61ctYHygFDX8vnAz88PO3fuxIQJE15YB678PHnyJFq2bIl+/fqZ7TfDMFi+fDkOHz6MrVu3ok+fPkhKSjJ6/+zsbJP6ARsGGkxAKCkpgV6vR5s2bSq2OTs7w8XFpcb9yq9Anr3iKd9edZsN62DRokWIi4vDd999V+1VaWpqKrRaLYKDg406HldtoDwg1LV8vujXrx9mzZqF0aNHo7S09LnPufAzPz8fK1aswM6dO58LzObQvn17nDt3DpMnT0Z4eDiWLl1abR2qcvPmTZP6ARsGGkxAeNHQsraZC0qlEgqFAllZWZW2Z2VlwdvbmzP/bHDDqlWrcPToUfz0009gWbba79T1NgNXbaA8dYU1JXWbPXs2goKCqn1Jz1w/i4qK8Morr2DlypUIDQ0161jVIRKJMHXqVCQkJODu3bvo1KlTrQ+dTe0HbBhoMAGBYRiIxWIkJydXbMvOzjbqVflevXohNja20raYmBiEhYVx7aYNM9i8eTN27NiBn3/+ucbZPEFBQbC3t69YyMUYuGgD5SMEU8rnk82bNyM5ORlbtmyptN0cP9PT0zF06FAsXrwYo0eP5srVanF1dcWuXbuwdu1aREZGYvr06S9M6BcQEGByP2CjAQUEiUSC8ePHIyoqCsnJycjJycHSpUvBMEyt+y5YsAA//fQTduzYgby8PKxZswbJycmYPXu2BTy3YQxff/011q5dixMnTsDDw6PG7zo7O+Ptt9/G6tWrcfXqVZSWluLo0aPw8fF5YUdibhsoKysDEcHR0dGk8vlEKpVi//79+Mc//lFpBpGpfiYkJCAyMhKbN2+ueAgbHR2NhQsX8lqPIUOGICEhAQAQEhKCU6dOPfcdNzc3k/sBGwCoARATE0N9+/alvLw8evXVV0kqlVLz5s3pxx9/JA8PD9qzZ0/Fdzt37kxLlix57hj79u2jgIAAcnBwoPbt29Px48ef+05RUREBoBMnTvBaHxuV+e6778jPz4/u3Llj9D6lpaU0a9YscnNzI5lMRt26daO4uDgi4qcNPHr0iJo0aWJy+WVlZQSgkrm4uBhdvjGcO3eOmjRpQmlpaUb5WZ2vKpWKFArFc74CoAULFnDma238/PPP1KxZM5o2bRoVFhZW+szUfsASv4GVc6tBBYTqqK4hlP/Y27dvN7oMFxeXiv0aYEOwWk6cOEE+Pj6UlJTE2TH5aAPJyckUEhIiWPnGsnHjRurYsSOVlJRYva+18eTJE1qwYAH5+/tXG7yfxdYPGMUt7qYF1BN+++03k/Z7/Pgxx57YqI3yWSaHDh2qNGvEXPhoA3VJWyFkG3zvvfdw+fJl/P3vf8eXX35Z6/et+XyRy+WIiorCsGHDMHXqVLRv3x5btmwx6new5noJSYN5hlCVR48eQSQSITMzE+PHj6/xDUUb1se1a9cQGRmJb7/9Fp07dxbanVrJzc2tN1Mbt2zZgsTERGzdulVoVzihR48euHz5Mpo0aYKOHTvi8OHDFZ/Z+oG60WBHCJ6enlY1/c+G8dy5cwfDhg3Dtm3b0KtXL6HdMQqhUl+bglQqxYEDBxAaGorg4GD06NFDaJfMRi6X49NPP8WYMWMwZcoUfP/999iwYYOtH6gjDXaEYKN+kpGRgQEDBmDFihWIiIgQ2h2jqU8BAQCaNm2KnTt3YtKkSc+9f1Gf6datG65cuQJXV1d06NDBtuZCHbEFBBtWQ0FBASIiIjBjxoznUhJbO+ZkOhWKfv364c0338S4ceMaVHZPqVSKqKgobN26FZMnT8bMmTONesvZhi0g2LASSkpKMHToUIwYMYLX1M18Ud9GCOUsXrwYjRs3xpIlS4R2hXP69++PhIQEqNVqdOnSBVevXhXaJavHFhBsCE5ZWRlGjx6Ndu3aWd1i8cZSXwOCSCTC9u3bcejQIezbt09odzjHyckJW7duxYcffojBgwdj+fLltjQWNWALCDYEhYjw1ltvQSaTPbemQX2ivgYEAFAoFDh48CDef//9SikfGhJjxozBlStX8Ntvv6FXr17VroZmwxYQbAjM7NmzkZ6ejt27d8POzk5od0ymPgcEAAgMDMSnn36KUaNGobCwUGh3eMHT0xOHDh3CG2+8gbCwMHzxxRdCu2R1iKiezsnasGFDxfJ9OTk5SE5OrpiiaGdnh/nz5yMgIEBIF23UwrJly/Dzzz8jOjr6hZlLrZXo6GjMmzcPCoUCbm5uuHjxIsaPHw8/P7+KBHchISFCu1ln3n//fdy/fx8HDx5s0OnfU1NT8dprr8HX1xfbtm2rN++Q8Mztepu6Ys2aNSSRSKrNqSKVSkmlUgntoo0a2LRpEwUHB1NOTo7QrpjEo0ePnmt/IpGIpFIpOTg41CkdgjVRVlZGvXv3prVr11bartPpqKCgQCCv+KGsrIw++OADatq0KZ06dUpod6yB+pvLKD09neRy+XPBQCQSUWRkpNDu2XhKUlISPXz4sNK2Xbt2kZ+fHz148EAgr7ihWbNm1V6QODk51esLkvJEfeX5gbKzs6lHjx60cuVKgT3jh/Pnz1OLFi3ovffeo9LSUqHdEZL6GxCIiDp06FDtydgAk07VW0aOHEkeHh50+/ZtIiI6fvw4+fj40I0bNwT2zHxmzpxJdnZ2ldqfo6MjLVy4UGjXzCY2NpZ8fX3p0KFD5ObmRvb29tSqVSuh3eKN/Px8GjduHL300kt069Ytod0RivodED7//HNiWbbSCalUKqmsrExo12wQ0cOHD0kul5NYLCZnZ2fasWMHeXt706VLl4R2jROOHz9OjRo1qtT+5HI5/fHHH0K7xgkTJ04kmUxWUTeWZSsCe0Nlx44d5OXlRTt37qz28/z8fAt7ZFHqd0DIzc2t1GDt7Oxo2rRpQrtl4ylLliwhqVRacStPJpPRp59+KrRbnKFSqSrqV17H4cOHC+2W2ahUKho7duxzF1uOjo60atUqod3jnZSUFOrQoQONGTOG8vLyKrar1Wpq27YtHT16VDjn+KV+BwQiorCwsEqjg2cX97AhHBqNhpydnZ+7pccwDH3zzTdCu8cZXbt2bVDtr6ioiAIDA184YaN169ZCu2gR1Gp1xVoLMTExREQ0depUkkql5OLiUilQNCDqf0DYtWsXKZVKAkDu7u6k1+uFdskGEe3Zs6fid6lq9vb2tG3bNqFd5IQ1a9ZUjBIaSmcZGxtLTZs2JYZhqg3od+/eFdpFi3H48GHy8fGhKVOmVOjh6OhIr776qtCu8UH9DwjFxcUkl8vJ3t6e5s+fL7Q7Np7Srl27ameAMQxDQ4YMoZs3bwrtIidcu3aNlEolKRQK+vrrr4V2hzM0Gg19/PHHpFAoSCQSVbpttHr1aqHdsygXL158bkYjy7K0f/9+oV3jmlv19sW0Zxk+fDgOHz6MxMREtG3bVmh3/vRcuXIFYWFhKC4urtimUCjQvHlzbNq0CT179hTQO24hIjg7O1cswuLg4CC0S5ySmJiIsWPHIi0treL3bN26NVJTUwX2zDKUlZWhc+fOSElJeS4jbKNGjZCamgp3d3eBvOOc2/UmIKjVaqSmpuL27dvIyMhAVkYGsh48gKa0FLfu3kVCaioiXn4ZSoUCUoUCns2bw8vLC02aNEFgYCB8fHyEroJVkp+fj5SUFNy5cweZmZlIv3MHT/LyUFRcDK1aDYhEYJRKODg6wsPPD+7e3vD19UVAQABatmwJiUTy3DHHjh2LAwcOQKfTgWEYODs7Y/369RgzZowANTSf8jfh7927h0ePHuHhvXsoyc9HYVERdKWlOJ+YCJfGjRHapQvcmzaFh7d3Rbtr3rw57O3r9zpUWq0Wn332GVasWIGSkhJIpVIkJCTA39+/4jtZWVlISkrCgwcPkJGRgUf37kFdVISCwkLoNRpALIayUSM4SKVw9/ODl48PmjRpgoCAADRv3hxisXVm0XnnnXewfft2qNXq5z6TSCQYMGBApRXaakKn0+H3339Hamoq/vjjDzzKyEDW/fvQqNXIz8sDdDrAzg5O5To9bUvl55sF2pL1BoTU1FScPHkScSdOIC4uDpl5eWglkyFAr4dnaSl8SkvRGAADwxguBkBPAHoAOQCyxGJkyWS4K5EgVatFnlaLDgEB6B4eju69e+Pll18GwzAC1tDyEBGuXLmC07/8gnNHjiD+0iVoSkvRViaDf1kZfNRqeGi1cIFhKT0ZAA0AHYAnAB4DyJBKkeHoiBsA7qhUaO7lhZ59+qB7//4YMGAAxGIxvLy8YG9vD5ZlsW7dOrz22mtWe8JXRa/X48KFCzjzyy+IOXYM8VeuQKzToY2jI/w1Gnir1XDX6eACwA6G9ncKQAAMmmUBeCiTId3BASkA7qtUCGjaFN379EHP8HD079+/3uY8Sk1Nxfjx43H16lVMnz4d3h4eOH/8OOKvXYNcJEKQgwP8NRp4qlRw1+vhAkOyNBZA+VixEEAmgEyZDGmOjkjW65GuViPY3x/d+/VDz3790K9fPyiVSqGqWYFWq8XatWvx9ddf4/fff4dIJMKTJ08qfYdlWfznP/9BZGTkc/tnZ2cjOjoa50+dwvnTp3HjwQP4SqUIEovhq9HAXaWCBxEaPf2+AkDR0/8/q1O6oyNuEOG+SoWWPj4IDQtDt759ER4eDi8vLy6rbF2pKy5cuEAzp0+nFh4e1EqhoL/LZPQ1QLcBolpMX8vnxQCdAWi1WEyDnZzIWSqlgd260f9t29bQ5xZTbGws/e3118nH2ZlCnJxojoMDfQfQIyN0rcm0ACUCtAWgSQoFuctk1NTdnRwdHenDDz8ktVotdNWNQq/X06lTp+ivY8eSh1JJLzk50SIHBzoE0GMz214ZQJcB+pdIRJFKJbnIZNQ7JIT++dln9Spth1arpSNHjtCE4cOJdXQkJ3t7+tDeno4BlG9mOyoFKA6g9SIRjXx6bob/5S/0xdatVpMuIysri3bs2EG9e/cmqVRKTk5OlWaXlb+N/+DBA1r98cfUNTCQ3GUyGq9U0r8BugSQxkydygC6BtDnAL2mUJCHTEadW7akFUuXcvWgX/iHyk+ePKF///Of1KZJE2qrUNAndnZ000zhjLESgA4DNJFlyUUmo9deeYUuX74stBycUVJSQpv+9S8K8vWlEKWSPhOL6XeeNdUCNAegt6RScpPJaETfvvTrr78KLcULKSwspHVr1pC/uzt1VSpps0hEGTxrpAEoGqC/yuXkKpPRuKFDrfpFvZycHFqxdCn5OjtTbycn+hKgbIDuP/29+dBIBdCR8nNTLqcpkZGUlJQktBQV5Ofn0+7duykiIqLixcuOHTtSeNeu5CmX0/tSKcXwqE+56QCKB2ieoyP5MAz17tiRDh48SDqdztSqCRcQSkpKaOXy5eSpVNIElqULPItXkxUA9G+xmFqwLPXv2pUuXLgglCxmo9FoaP3ateTl5ERjWZYuCqSpCqAdIhG1VSioZ0hIxVxua6CkpIRWfPABubMsTZHL6bpAGhUB9PnTdjewe3e6evWq0NJUUFBQQPNnziQ3hqG/y2R0SyCN8gD61M6OmjIMjQoPp9TUVKGlqcSePXuoqZsbeTg40IcwfxRgqmkBOgTQy0oltfLyoq//+19TpuALExD27d1Lfq6uNJlheL9qrauoX4tE1IxhaOLIkZSZmSmEPCYTHR1NAT4+NIplBTuBq5oeoP0AtWBZmjBiBGVlZQmq0XcHD5Kfqyu9LpdTmhXoU97uvhKJqAnD0PTXXhP8FuaO7dvJp1Ej+rtMRplWoA/BcFtpk50deTEMzZ0xg0pKSgTVKCEhgXp16EBdFQo6awX6PGvxAPVWKKhLQEBdL24tGxCys7NpzJAh1IFl6TcrEO5FpgLoI4mEvJVK2rd3ryUlMgmVSkXvTptG/ixLJ61Av+pM/VRTHycn+vGHHyyuUUFBAb0eGUltFQqKtwI9qrNigGY7OlJzV1c6ffq0xTXKzs6mkQMG0F8UCkq0Aj2qs1yA3pTJKNDXly5evGhxjbRaLf1j2TLyYln6r0hU67NLIe0AQL4yGS2aNYs0Go0x1bNcQLh27Rr5e3jQUgcHwYZVdbWrALVhWZo7YwZptVpLSVUnHj16RKHt2tFkuZwKrUCz2uw3gFoyDH28dKnF3iq/e/cuBTdrRjOlUlJZgQa12WmAmjAMbdq40SL6EBFdv36dWnh60jKJhMqsQIPa7BBA3ixLuy34MmB+fj4NDgujIQxj9oQMS1kOQKMZhnp37mzM6NwyAeHs2bPkpVDQDyKR4ALV1QoAGsYwNGrgQGOjrMV48OABtfD0pE8kEsF1qos9BiiMZWn65Mm8B4Xk5GTydXam/4jFgte7LpYGUAeWpQ/mzeNVHyLD7D4vpZIO1LPzMxWg1gxDn1VZzIcPMjMzKbhZM1ro6Eg6K6h7XUwP0EoHB2rl7V3bGiT8B4SYmBjyYlmKsQJhTDUtQOPkcnp10CBznuBzSmZmJrX28aGt9vaC62OKlQDUl2Vp1ttv86bR3bt3qamLC+2vZx1dueUB1IllafVHH/GmUUJCAnkrlRRtBfU1xTIACmAY2vb557xp9PjxY2rbrBmtrWcXXlXtCzs7auXlRRkZGS+qKr8BIT09nXydnekXKxDDXCsDaDDDWOSKrTa0Wi3169qVVtbzBloMUAjL0o4vv+RcI5VKRZ0CAmibnZ3g9TTHHgPUgmHoyE8/ca5Rfn4+tfL2poP1NGCW2wOAfBiGzp8/z7lGOp2OBvbsSR84OgpeTy5snb099QgJedHdDn4DQv9u3ehTnq5gO+N/iaa212E/l2f2O1HHMnNhmC3zyy+/8ClbraxdvZoiGIbTB1pC6EkA3QLIk2Xp999/51Sjee++S6/L5fW+zREMz128nZw4f5HtjTFjaK5U2iA0igbI38OD89lHn6xaRYMYhpfbREJpNVYup8Vz5lRXXf4Cwjd79lBXhYK3+22dAVpSzfYDAAUC5AhQyNOGUvU7RWaIeRSgtn5+gq3KlpGRQZ4sSw8spKcxmpqjJwG01s6OIocM4UyjGzdukDfDUK4FNSKAPgPIHqh2yq+5Gs1zcKC/T5nCmUbnz58nf5alEgtodA6gCIBYGDqzIQAl8KDRG3I5LV+8mDON0tLSyINhOD/XjGlPNbUlc7XKBsiLYap7p+MWbwlmPl6wAJ8WFcGSGWxiAIwDMB9ABoBIAEMB3OCwjEEAfHJzcfDgQQ6Pajz/Xr8eb2g0aGKh8iyh6Xs6Hc6fOYObN29ycrx1K1ZgjloNZ06OVjtqAJMB7AWgreW7pvKBRoO9336LrKwsTo4XtWQJlj95AhknR6uZfgDaAUgDcO3ptnAAuRyXs7KkBJv/+U+UlJRwcrz1q1ZhmgXPNcAybckVwFy1GmuWLXv+Q87C6TOcPXuWOimVJkfOPIBeBUgGkB9A3wDk8TQizqkhukYANLLKtg4ATeX4SuQngPp07MiHdDWi1WrJ28nJ5Jf5SgGaBZA7QE4A9YdhimNNVyvGaGqungTDOwpz333XbI2KiorIzYzRgSkaXQToOEC/PtWBjxECATRDJqNPOFiLID09nTzlclJbSKOmqJzv6cZTLb7nQaOxLEvbOXgmpVaryZ1lTU5lkgfT+jBj2hIXWuUD5CaXV135jZ8RwrFDh/BqlayAdWEGgAQAFwFcAnASQAGAPQDW1bDfWQDdq2zr+XQ7lwwAcC0lBUVFRbV+l0uuXbsGLwB+Ju4/F8D3AI7BkEnxAwDja9nHUpqOLCvDiUOHzD7OuXPn0EUiMXl0YIpGXWC44uWbESoVTnAwMj158iQG2NnB0cT966rRfQCiZ/52evqv1MTya2JEcTEnGsXFxSHI3h6m5hI1tQ+zVFtyAtBdIsGZM2cqbeclIMRFR6OnTmfSvtkwiLYIQFsALgDWwDCUqomip+ZWZbsHgHSTPHkx9gA6S6X47bffOD5yzcTHx6O7RmPSvrkAPgewGEBHAI4AesNwG+hFWFLTYAD3Hz58Lr1wXYmPjUWoiYHaFI0sSSiA+MREs48Tf/q0oBqdBNAShltJXNMDwPn4eLOPE3f+PHo8s8BTXTC1D7M0PQsLcd4SASEjMxNNTdz3JgxrGrR5ZpszDKLWBD39V1TN9qrbuKCpToeMDMt2FY/S0+FbzUIdxpAKwz3J4DrsY0lNxQC8HB2RmZlp1nEe/f47mph4MWKKRpaEASABKq1EZwqP7t83+b64uRrlA1gBYCcMF1Zc4wMgMz/f7OM8vHcPTbWm3cU3tQ+zNE2I8PDevUrbeAkIqtJSkx9W0Qu213aKK2FYYKLqI7csAN4m+lITjFbL2cMrYykpLIScXqRQzZiyl6U1ZcVis0cIJUVFnLc9a4K1tzdfIzMeJpujURGAVwCshGG0wwd2MFys6Ey8KCiHj3ZknkfcwwJ4UmWkyEtAaKxUIsfEfQNgcCr5mW3ZMFxZ1EYvALFVtsUACDPRl5rIdnCAq6srD0d+MY09PZFjZ2fSvkEwXJFdr+N+FtVUq4WbW9UbVHXDxcvL5NkrpmpkSXI0Gri4mHet6eLubnGN0mGYnbYYwGgTyzaGEgCOEgnsTDxPynHx9hakD7MkWQBcq6y4xktAaNm6dSUx6oIbDA+oomAQNAfAUhiGy7WxAMBPAHYAyIPhvl0ygNkm+lITyQBatGjBw5FfTIuWLZFi4rKfzgDeBrAawFUApQCOwjDErul601KaFgMo0OnMDgj+QUFIkZl2bWeqRpbiAQAXhcLsdXX9g4ORYuIxTNEoAYbpypvxvwem0QAWmuRBzaQA8Pc2f/zaIjAQySaea+b0YZYkxcEBLYIr3/zjJSD0HjoUp0w8KQHg3zDMW+4M4CUAETAMb2ojDMBuGBqr59P/H0Lle3lckA3goU6H4GDL3m3u1asXzmq10Ju4/zoAI2CYJeUMw73cg6i5oVpK03MA/tK+vdlXdr3CwnBaIjF5f1M00sJwm6LX079bwTDXm2tOAwgLM39sFta3L06zxpxR1VMXjdQwzEqLheG5g+ip8TWT5rRYjLCBA80+Tp8+ffCLGeuAm9qHWaotAcApmQx9+vatvNHsCbvVkJGRQe5yORWbMZ+4qnkAtOeZv4V67ZsAirKzo7ffeIMP6WqlR3AwHeNQV2vQkwCKZFn6v23bzNZHr9dTay8vXtbbEFqjPkol/fjjj2ZrVFpaSl5OTnSvAWrUTqnkLKdRl9atK96v4MKsqQ+7ClBLT8+qyTr5S10xbuhQ+ozDxGJVxRTKngDUlGHo+vXrfElXI7t27aL+CoXgOnBptwHyUCiouLiYE402rFtHExhG8HpxaRcBau7uztm6HIvnzKGZHOcxEtqOAtSpVStO9CEi2v7llzSYZTnzz1r6MAJoPMPQhnXrqlaZv4Bw584d8mQYemim4w/xv2gI/O8tP6FssYMDvTlhAl+y1YpOp6NOrVvT9/U8Q+WzNoJh6LPnG6fJqFQq8vfwoHNWUDcuTA9QD4WCdu/axZlGeXl55O3kRElWUD8uTANQG4WCTpw4wZlGWq2WOrRsafa5Zm192GmAWnl5kVqtrlplfrOdRn38MfVl2XqxApMxdhKgpi4ulJ2dzadstRIXF0e+DEPpVqCJubbNzo46BwRwvvjQkSNHqCXDUJ4V1NFcWymRUHhoKOeLCe386ivqwEOCOyHsfamUxg8fzqk+RETx8fHkw2OCO0tbJkDNGIaio6Orqy6/AUGv19OI/v3pbanUqtceNcaSAPJmGIqNjeVTMqPZsHYtdWNZKrICbUy1szCkdb579y4vGi2aPZsGMQyVWkFdTbUfRCLyc3WlzMxMXjR6c+JEGi+X17tVwJ61L8ViCmrShAoLC3nRaNPGjdSJZev9xUUxQD1ZllYuX/6iqvK/YlpxcTH16dKFZkil9bbRXQfIl2Ho4IEDfMtVJ2b+7W/UR6Gol0HhHGBYSS8mhjd9dDodTRo1il5hGJMTuQlpP4lE5NOoESUmJvKmUWlpKQ3p3Zv+KpeT1grqXFf7WiymZm5uvF1UlPPBggX0kkJBOVZQZ1OsEKA+LEvvvvlmTSNNy6ypXFxcTIN69qRhDFMvFoJ/1g6JROTFsvT9d99ZQqo6odfradbbb1MHHtZH4NP2iETkpVTSmTNneNeorKyMJo8eTb1YlrKtoO7G2iZ7e2rSuDFduXKFd41UKhUN69uXIurR+akH6B8ODtTC05Nu3rzJu0ZERB8vXUqtGIauW0H962K3AWrLsjTv3Xdru+1omYBAZHhAM3fGDGrFsvSrFYhUm5XAcF/S38PDIielOXz+r3+RN8NY/VKITwB6RyajAF9funHjhsX00ev1tHLZMvJjGKtfOzgPoIlyOXVs1aq2BdE5pfz8bM2yFGcFOtRkjwAaxjAU1qmTxZ/n7d+3jzxZljbZ2dWL2+BficXkyTD01X/+Y0z1LBcQyjl+/Dg1c3Ojv8lklGkFglVnPwDUmmXpzQkTqKCgwNISmcTly5eprZ8fjbPSB2CHAWrFsvTWpElUVFQkiEZnz56lFh4eNE0ut7q2p4dh5NSUYWjee+9VNwPEIhw5coSaNG5Ms6VSq7tnrgNom1hM3gxDH3/4oWCrFt69e5f6dOlCvRUKumQFulRnSQANYlnq2rYtpaSkGFs1ywcEIqLCwkJaPHcueTAMLZVIrOLk1AN0DKBeCgW9FBhIp0+fFkIas1Cr1bR6xQryYFma7+Bg9pRfLuwMQP0VCgrx96eTJ08KLREVFRXRknnzyINh6COJxCruCR8FKFShoO7t2lF8fLzQElFubi7NnD6dvBiG1tnZCX4bSQfDMq4hCgWFh4by+kzFWPR6Pe346ivyc3WlCQxD16ygHRFAKQD9VS4nn0aNaMvmzXV9b0WYgFBOWloavf+3v5Ebw9BUuZx+BSw+DMsB6N8iEbVXKukvgYG0f/9+zqf3WZpHjx7R3HffJTeGoTflcjpvYU2fALQDoO5KJQX7+dHOHTs4e6GKK+7fv0/vTJlCbnI5vSuV0hULa5QP0FaRiDooFPRSQAAdPHjQ6tpdamoqTYmMJA+5nOY5OlKyhTV6DNBGsZgCFQoK69iRjh07JrQkz1FSUkIb16+n5m5uNECppG8BUllYp1KAvgNoqEJBTRo3pk9WrTJ1FC5sQCgnNzeXNm7YQJ1atqQWLEtzHB3pFAwvm/AhYBpAW0QiGurkRK4MQ38dO5Z+/fVXoWXgnLy8PPps/Xpq36wZBSoUtEgioTiAl9leBQDtBWgSy5KrTEavDhhAR44csbpOriqZmZm0+uOPKcDbm0KUSlpub0+Xwc+FSQ5A/wVojEJBLjIZTRo5kn755RehJaiVtLQ0WrZ4MTVzdaWuTk602s6OtwermQD9H0DDlUpyZRiaOn48xcXFCS1BrZSVldH+/ftpWO/e5CaT0WSWpW9hCPx86FQIw6jprwxD7jIZDQoNpd27d1Npaak51bglIiLiKXeSSaSkpODQDz/gyDff4OqNGwiRydCtpAQhGg0CAATC+KyBBEOGyFQYsg7+plQiVq9Hqb09Bg8ejIgxYzBw4EDI5XKeamM9XLt2DT8cOIBD33yDu2lp6CqVoltREYJ1OrQF4A/D4ivGUADgBoAkAFdkMsQ6OOCuRoO+PXpg2MSJGDZsmNkpmoXgwoUL+PHAARzauxcPMzPRzcHBoJFejzYAmsOQb98YcmHIvJkM4JJcjliJBBlaLcL79MHwiRMxZMgQODk58VUVXtDr9YiJicGh/ftx6MAB5OflIVQiqdAoCIblXY1NCZcNgz4pAC4yDM7b2SGHCIMGDMDw8eMxePDgenluZmdn4/Dhw/hpzx78EhMDX4kEoWVl6FRSgkAYUojXJadvDgznWwqAq+XnW2kpenftiqETJ2Lo0KHwqpLG2kRuW11AeBaVSoVLly4h7vx5JMXHI+X6ddz+4w9oysrgLZXCRSyGXCyGg04HmViMAiKQWIwcnQ5ZWi3yNRp4OTsjsFUrBHXqhE6hoQgNDUWzZs2ErpqgFBYWIjY2FhfKdU1JwZ2HD6GQSOAukcBVLIYdACURSolQameHEr0ej/V6pKtUYKRSBPj5Iah9e7Tv3h09evRAu3btzM5Uak3k5uYiNjYW8TExSLl4Eck3buB+VhaU5RrZ2UGs18NJJIJKr4fGzg5P9Hpk6XR4qFbDSS5HYPPmCAwJQYfu3dG9e3e0adMGYjMyaFobmZmZOH/+POLPncONS5eQdOMG0nNy4CSRwOOpRtDr0UgkQrFeD62dHYr0emRqtcgqLYUzwyDQ399wbj7VKCAgQOhqcYper0dycjLi4uJwJTYWqdeuIfXePeQWF8PV0RGe9vZQisUVbamQCDqxuJJOjeRyBDRvjoB27dD+aR8WHBxsdhr0arDugPAiSktLkZmZiezsbKhUKqifWVbS2dkZUqkUHh4eFl/Apr5TWFiIjIwMPHnyBAUFBdDrDYm2pVIpZDIZ3N3d4eHhAQcHB4E9FY68vDw8fPgQKpUKeXl5FdtlMhnkcjnc3d3h7u4OiRkpuOs7jx8/RmZmJlQqFfKfWc6SYZiKduTu7s5Hh1Zv0Ol0yMrKqujDip5ZuYxlWUilUiF0qp8BwYYNGzZscM7thjN+tWHDhg0bZmEPYJ/QTtiwYcOGDcF59P+Fc689GRWVFgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<PIL.Image.Image image mode=RGBA size=388x466 at 0x7FF9942673A0>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.circuit.library import HGate\n",
    "dag.apply_operation_back(HGate(), qargs=[q[0]])\n",
    "dag_drawer(dag)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**c. Add an operation to the front:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.773434Z",
     "start_time": "2019-12-10T21:48:03.662725Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAImCAYAAABTgf2rAADNSklEQVR4nOzdd3xTVRvA8d9NutOWTlpaRtllbwVkyhBokb23ijgQEJApigoCCiiyFAdDpVDZyKaixYIslQJlbwp00t10JPf9I8JLGaVNk2b0fPPh89qb3HOenDe5T+69Z0iyLMsIgiAIJd0lhakjEARBEMyDSAiCIAgCADamDsASxcTEcOHCBe7cucPdu3e5G3uXjNwM0tPTyczOxM3FDVsbWzxUHvj7+1O6dGnKly9PtWrVcHBwMHX4xebWrVtcvnyZ6OhoYmNjuRN7hyxtFqmpqWTnZuNeyh0bhQ3epbwpU6YMpUuXpmLFilSpUgVbW1tTh18stFotN27c4PLly9y5c4fY2Fhux94ml1ySkpPQaDV4unuiRImPhw++vr74+PhQuXJlAgICsLERX2HBcCRxDyF/CQkJhIeH8/uh3/ntr9+4fOYySmclNlVt0PprUfuoyfbKBmfg4WNYKijSFTjGOWJz2wbpukTmxUxcvVxp0LABHZt15IXmL9CkSROUSqWp3p7B3L17l99//50Dhw/w+1+/c+P8DWw9bFFWVaIpo0HtqybHPQdcgYffbvJ/7RTjiO0dW+RrMpmXM/H096Rx48Z0bNqRFi1aUK9ePSRJMtXbM5hr164RHh5O2OEw/jzyJ9GXorHztcOmqg05Pjmo/dTkuuRCKfKevyeBMl2Jwx0H7O7aobmsQX1DjU+AD883fp4OzTrQsmVLatSoYaJ3JliBSyIhPMGNGzf4ce2PhPwawpXzV7BrbUdK8xTkpjLURXfw17tw4DjYRdjh+Kcjmqsa2nVsx/Dew+nSpQt2dnYGehfGd/78eVavXU3or6HcuX0HmxdtSGmWAk2BWoCjngVrgavAEXD8yxHbP2xRxCvo3KUzw/sMp127dhaVRP/55x9Whaxi045N3Eu7h/SiRFqzNF07BQL6/l+eC1wCjoDTISeUvytxyHGgW1A3hvUbxgsvvGAVSVQoNpeQBVmWZVmj0cgbN26UG7/YWHYq4yQ7vOsgE45MDrJRHzHIrEJ27eQqu/i4yKPGjpIvX75s6uZ4qqysLHnlqpVyzWY1ZVUFlWw73VbmKDIaI7fTDWRpuSSXallKdi/rLr83/T35zp07pm6Op0pLS5O/WvKVXKFOBdkl0EW2mW0jE2nkNpKRuYisWKiQXRu5yr5VfOVP5nwiJyYmmro5BMtwscQnBI1GI/+w8gfZt4qv7NrWVWYrxk8CT3tEI9t+ZCs7lXGSu/TtIp87d87UzfNAVlaWvODLBbJHOQ/ZpauLzH6MnwSe9riEbP+evezk7SQPfG2gfPPmTVM3zwNpaWny9I+my66+rrJqoErmLxO1kYzMKWTHNxxllbdKfmv8W3J8fLypm0cwbyU7IYSHh8tV6leRXdq7yBwz4Rf30UcmsuIrhexUxkl+ZfQrclJSkknbadu2bbJfVT/ZubezzFmTt87/H8nItp/Yyioflfze++/JmZmZJm2nlatWyh5lPWSn15xkrpu8df7/iEW2n2gvu/i6yPMWzJNzc3NN2k6C2SqZCSE9PV0eNWaU7FLRReZXk39dn/5IQrYfZy97VvCU9+zZU+ztlJiYKPca3Et2qeUi86fJW+Ppj7vIjsMc5bI1yspHjhwp9na6deuW3LJzS9m5uXPxXBbS93EF2SnYSa7ZtKZ89uzZYm8nweyVvIRw/fp1uWqDqrLjq44yKSb/ihbs8SeyqpJKnvHJDFmr1RZLO50+fVouU6WMbD/ZXkZt8hYo2GM7sspfJS9fsbxY2kiWZfngwYOye1l32eZzG5lck7dAgR6KlQrZpYyLvHnL5mJrJ8EilKyEcOrUKdmjnIds87WNyb+UhX7EITu3dZZ7D+1t9FP+8PBw2aWMiyxtlEz9rgv/uIbsXN9ZHjd5nFHbSJZl+ZcNv8gqf5XMHyZ/14V/RCKrKqvkLxZ/YfR2EixGyUkIUVFRspu/myxttcCD3P1HFrKqq0ruM6yP0c4U/vzzT9m5jLNMhMnfrf6PZGRVM5X87rR3jdJGsizLGzdtlJ3Lmdk9lcI+biOrAlXyomWLjNZOgkUpGQkhKSlJ9qvmJ0vrLTgZ3H9k6c4UPvr0I4O3082bN2U3fzfL/MX76CMZ2bmOs7xy9UqDt9PJkyd1SfOMyd9l0R/RyKoKKnnfvn0GbyfB4pSMhNC1f1fZfpK9cb5QjZDhv38rC7Gf50P77StknbG6L3FERITB2kir1coNWjaQbb4y0uU0U7TTRWTnMs7yhQsXDNZOarVaLlu9rCxtMtKPC1O001/Ibv5uclxcnMHaSbBIF61+crv9+/dz4N8DZH2SZbxKpqP7Kg5/aNsmoAbgANQHwh7ZJx5I1bM+b0j/Kp0hbw1Bo9HoWUheq1av4pJ0idzRuQYp74me1E4Ai9BN+3HpCfsUpZ2qQMb7GYwYM0LPAh43+7PZ3Gt0D7mHEQf4P9pOEUAw4AJ4AUHAqUf2KUo7PQ8ZQzMYN22cngUI1sLqE8L4meNJ+zxN/+kB9BEB9AcmAbeBvui+0OcMWMfLEOcVx+bNm4tclFarZconU0j9MhWKc6YDNTAUCEU3DYMRaEdpibwRyeHDh4tcVlpaGgsXLyT983QDRFYI7YA6wE3g5H/bOgCJhqsie3o2m7dv5vr164YrVLA4Vp0QIiMjuRpzFbroWUAS0BtwAgKA9YAvuoPmxHz2m4PuV9wIwAOYhm7Omvl6xvEUqWNTmbNsTpHL2b17N+qyamigZwFJ6NdOp4EhwDw96y0IJaSPTufz5Z8Xuaiffv4JOgJ+ehaQhH7t5AN8CrgB/sBCIAY4qGccT6KC3Fdy+eqbrwxYqGBprDohbN+xnew+2fq/y9FAJHAMOIHusk8yEEL+B/dwoPkj21r8t92QOkPUv1GkpKQUqZiNOzeS2k/f6w3o306N0f3SNTJtPy17d+1Fq9UWqZx1O9eR3q8IZwf6ttN18p65lfrvfw08k3p232w27dxk2EIFi2LVCWH3od1kt8zWb+c4dF/Uqehm7vRE90tW/Yz9Uv/75/3Idh8gWr9QnsoGHJ5z4MiRI0Uq5kDEAeSWel4T17edipMHKH2UnD9/vkjFHD90XJfY9WHIdgoDqqC7lGRIdeDuzbtF/oEhWC6rTgjR0dG6U3N9XEA3DXPNh7a5o/si5+f+cfXRa/HyE7YZQE5Aju59FkFcdFzxt1MxUwQoitROWVlZ5Obm6t6bPgzVTknAx8AaDL+8lQLsy9pz584dAxcsWAqrTggZaRn6r13wtB/Mz+rU44quN0jsI9tj0f/acz5yXXNJTS3C5R4gKz0LVHrurG87FTPZVS5SO6WmpmKjKsIR2BDtlAr0AGYDzfQPJT8KV0WRP0+C5bLqhFDKvZT+PTGqo2udqIe2xaH7hfYsLYFDj2yLAFrpGUs+7OLt8PQs2s9xJzcnuKfnzkVpp2KkiFcUqZ3c3d3Jvqfn5UcoejtFo+upNg3djWkj0cRrivx5EiyXVSeEyhUrg76Xjb2BAcBcdF/iBGAGBfslPRnYAaxGd6Cd918Z4/WMJR/KC0oCAgKKVEbZimVN007FKOdCTpHaSalU4uLlouv6qY+itFMkuq7Ly/j/Tfj9wBQ9Y3maLMi+m02ZMmUMXLBgKaw6IQS1CsLxgL7rOAJL0PX/bgQ0QdeVtCCXoFoBa9F1P/X977+3k/f6sSGkgfqMmsaNGxepmM6tOqM8UIQlKfVtp1x091Va/vd3VXQDrwztCjgqHClfvnyRimnVuhUcKEIB+rSTGt2N7ENAbXTtJWGc3ll/QbW61XBwMHD3JcFiWHVC6N6tO9JmCTL1LMAN2IBu/ytA16e8bja6L+mqh7b1RjcQLQvdYKJHv8Be6O41FIG0VqJ9p/ZFXoe5f6/+OP3o9PTr3M/ihn7tZMP9yRb+/y/+kX0M0E62q23p16tf0QoBhvUchusaV/0LcKPw7eQApPB4O8nozjbuM0A7Oa12Yniv4UUrRLBspp48w9g69+ksK5YqDDfXjA8yIQYrTf9HDrJLDReDzWdUq1kt3fKh1tZOycgqP5V85cqVIrdRbm6u7B3gLXPCCtvpJrJzaWeTr84nmJT1T253/vx5WVVGJRNXxC/MHfL+Pptg2i+w8gul3L57e4O1U3h4uOxcxVkm07rayWGCg/zq6FcN1k4/r/1ZdmnmUvT1pM2snZz6Osmz5s0yWDsJFumiJMuyEWfpMg/TPprGV8e+In1bunVcJPsXXLq4EHkossg3lB82aOQgNkubyVyh7zU2M7MPvEZ6ceGfC7i76zuA4HEtOrXg2AvHyJ5RhF5HZkS5WkmFhRU4e+xskS8/ChbtktWfIciy7lS/ecfmst17dib9FWaQxy3dcppbt201eDtlZGTIVRtUlZWLlKZ+l0V/nNFdKvrrr78M3k5xcXFy6YqlZWmDFayvcRDZtYyrfOnSJYO3k2BxrP+S0X337t2TazapKTtMczD1V1D/xy1kVTWV/OXSL43WTrdu3ZL9q/nLtkttTf1u9X+cQVaVU8kbNm4wWjudOXNGdi/rbrx1EYrjcVC3XsTBgweN1k6CRSk5CUGWdUmhfov6stNgp6JfKy/uxxFkVXmVvOTrJUZvp1u3bskBtQJkhwkOFrNw/IPHLt1BbuOmjUZvpzNnzsjeAd6y7WeWlzwVaxSyq5+rSAbCw0pWQpBlWc7KypIHvjpQdq7nLPOvqb+WBXjkItt8biOX8itVrMscpqSkyO1ebic7t3KWuWzyVnj2Q41sP8Ve9g7wlo8fP15s7XT37l253gv1ZFV3lcxdk7fCsx/JyI6vOcoValWQL168WGztJFiEkpcQ7lu3fp1cyq+UbDfNTibF5F/TJz+OILs0c5Fbdm4p37p1q9jbSKvVykuWL5GdfZ1lm89sZNQmb5EnP/YhO9d2lnsO7iknJiYWezvl5OTIH3zygazyU8mKFQrzPKvSIku/SLJzRWd51NhRcnp6erG3k2D2Sm5CkGVZjo2NlYe9MUxW+alk5RdKmVSTf211j5PIqn4q2buit/zz2p9N3UzytWvX5JcHvCw7V3SWpe8l80kMfyK7dHKRK9SuIO/atcvUzSSfPn1abtG5hexcy1kmFPNIDFpkdul+WNRuVls+dOiQqZtJMF8lOyHcFxUVJfca2kt28nGS7SbZyUSZ4IubhcxGZJeOLrJ3RW/5y6++lNVqtambJo+jR4/K7Xu0l1X+KtnmIxuZayZopzRk1iC7NneVy9cqL69ctVLOzc01ddPkERYWJj/X/jnZuZKzrFigMM2lpHvI0teS7FLXRa7xfA1506ZNslarNXXTCOZNJISH3bx5U576wVTZK8BLLvVcKVk5RykTaeSD2xZkp5FOslNpJ/mFzi/IoaGhck5OjqmbIl/nz5+XR08YLbv5ucmlWpeSFV8oZC4a9+DGOmTnQc6yk5eT/FLvl+SdO3ea/QHu77//loe/OVx29naWS3UuJUtfSzI3jNhOMcisRHbt5So7eTrJvYb2ksPDw03dDILlKBkD0wpLlmUiIiLYuH0jG37dQOK9RGyb2ZLaLBVtXa1uKuPyFG7Bm0x0M4qeA/tj9jgedkR9Vk2NujUopSjFzz//jJ+fERZMMCKNRkNYWBi//PoL23ZsI0OTgaK5gtSmqci1ZagBFHbizDR0c0BFgeMxR+wO2ZF9NZuW7VoyIGgA3bp1M+ggs+KQlZXFrFmz2LF3B1ejr6J11iI3lUl9PlW3elpNCj+pXxK6djoDqiMqlIeVaGO0tOvYjgFdBxAUFISzs76LgQgl1CWREArg7t27/PXXX4T/Fc7R00e5eO4iSTFJ2PvaY+Njg1xaRmujRXaTkSQJWS1jk2kDaaC9rSUnNgdthpayVctSu0ZtWjVsRdPnm9KwYUMUCgWdOnWidevWfPDBB6Z+q0Vy8+ZNDh06xB9H/uDEmRNcPn+Z1IRUHPwdUJZWQmnIVeYiuekyqZwhY5NlA8mgvaNrJzlbpkL1CtSpWYfWDVvTrFkz6tati42NoZcHKz6nT5+mU6dO/Prrr9SvX5+LFy/y119/8cfRP/g76m+unLuCOl2Ng58DUmkJqbSkayfX/9opTcYmxwY5QUaOkcm6m4WNwoaKNSpSN7AubZq0oVmzZtSoUQOFwhqG4gsmIhKCvrKzs4mLi+P27dskJSWRlJQEQGZmJo6OjtjZ2VGqVClKly6Nr68vHh4eTy0rMTGR5s2bM336dIYMGVJM76B4ZGVlERMTw+3bt0lOTiYlJYW///6bw4cP8/bbb+Pg4PCgnfz8/HB1LcJsombo9u3bvPDCCyxatIiXX375qa/LzMzk7t273Llzh+TkZNLS0tBoNGg0Guzs7HBycqJUqVL4+Pjg5+eHSmVmC04I1kAkBHNx5coVWrVqxY8//kjbtm1NHY5Rbd26lZCQENatW2fqUIwqIyODNm3aMHToUEaPHm3qcAThWS6J80szUalSJdatW8fgwYO5cOGCqcMRikir1TJw4ECaN28ukoFgMURCMCMtWrRg4cKFBAUFERcXZ+pwhCJ49913ycnJYcGCBaYORRAKzHLv1Fmpfv36cfbsWXr16sW+ffuwt7c3dUhCIa1YsYKDBw8SHh6OUlmEpUkFoZiJMwQz9OGHHxIQEMDw4cMRt3gsy65du5g1axZbt24V3T4FiyMSghmSJInvv/+emJgYZs2aZepwhAI6c+YMI0eOZNu2bZQrV87U4QhCoYmEYKZsbW3ZsGEDP//8Mz/99JOpwxGe4c6dOwQHB7N06VLq169v6nAEQS/iHoIZ8/DwYOfOnbRq1YqyZcvSpk0bU4ckPEFGRgbdu3dn/PjxdOvWzdThCILexBmCmatUqRIhISEMGjSIixcvmjoc4RH3u5c2bdqUd955x9ThCEKRiIRgAVq2bMnChQvp0qUL8fHxpg5HeMj48ePJzs4W3UsFqyAuGVmIfv36ERUVRc+ePUV3VDPx7bffEh4eTnh4uEXPtSQI94kzBAsyc+ZMAgICGDVqlKlDKfF2797NJ598IrqXClZFJAQLIkkS3333HTdu3GD27NmmDqfEOnPmDK+88gobN24U3UsFqyLOcy2MnZ0doaGhNG/enEqVKjFgwABTh1SiREdHExQUxIoVK2jSpImpwxEEgxIJwQJ5eXmxa9cu2rRpg7e3N+3btzd1SCVCSkoKwcHBTJgwgeDgYFOHIwgGJy4ZWajKlSuzadMmhg4dSmRkpKnDsXo5OTn07t2bl156SXQvFayWSAgWrEmTJqxYsYKuXbty8+ZNo9TRuHFjJElCkiRWrVpV4P28vLwe7Ld//36LrR90S6qOHDkSDw8PPv3002e+3hxiFgR9iIRg4YKDg5k2bRpdunR5sGqboU2fPh1Zlhk+fPiDbZs2baJGjRo4ODhQv359wsLC8uwTHx9Pamqq0eoHWLRoEba2tly6dOmxfQxZ//vvv8+1a9dYvXp1gZeofDTmiIgIgoODcXFxwcvLi6CgIE6dOmW0mAVBHyIhWIFRo0bRuXNnevbsSVZWltHri4iIoH///kyaNInbt2/Tt29fgoODOXfunNHrBlCr1QwdOpTQ0FByc3ONWtd3333Hli1b2Lx5c5HGfrRr1446depw8+ZNTp48CUCHDh1ITEw0VKiCUGQiIViJefPmUbZsWUaMGFHgKbOTkpLo3bs3Tk5OBAQEsH79enx9fZEkiYkTJz51vzlz5hAUFMSIESPw8PBg2rRpBAYGMn/+/ELFrG/9p0+fZsiQIcybN69Q9RXWzp07+eSTT9i5cyfu7u5FitnHx4dPP/0UNzc3/P39WbhwITExMRw8eNCo70EQCkMkBCtxf4xCbGwsH374YYH2GT16NJGRkRw7dowTJ04QFhZGcnIyISEh+R7cw8PDad68eZ5tLVq0IDw8vFAx61t/48aN6dChQ6HqKqwTJ07w2muvsXXrVipUqFDkmK9fv44kSQ/+LlWqFAAODg7GexOCUEgiIVgROzs7Nm3axNatW1m2bFm+r42LiyMkJISpU6dSq1YtPD09mTdvHmq1Ot/9UlNTSU1NxdvbO892Hx8foqOjCxxrVlaWXvUXh6tXr9K9e3dWrVqVZyprfdvsScLCwqhSpQrt2rUzYOSCUDRiHIKVcXV1ZefOnbRo0QJ/f/+nTsd84cIFtFotNWvWfLDN3d0dT0/PfMu/fznq4V+797c/ui0/qampetVvbAkJCXTp0oVPPvmEjh075nlO3zZ7VFJSEh9//DFr1qwRcyAJZkV8Gq2Qv78/27dvp2PHjvj4+NC0adPHXvO0+wwajSbfsl1dXXFxcSE2NjbP9tjYWPz8/PQPuoD1G5NaraZbt24MGjTosR5NoH+bPSw1NZUePXowe/ZsmjVrpm+ogmAU4pKRlapduzY///wzvXv3fmK3zOrVq6NQKIiKinqwLS4urkBdV1u2bMmhQ4fybIuIiKBVq1YFjs/FxUXv+o1Bq9UyePBgatSowfvvv//E1xSlzUA37cX9bsK9e/c2RNiCYFAiIVixtm3b8tlnn9GlSxfi4uLyPOft7c2AAQOYO3cuUVFRJCQkMGPGDFQq1TPLnTx5Mjt27GD16tXcu3ePefPmERUVxfjx4wscm729vd71G8P48ePJyMhg+fLlT31NUdosMjKSvn37smzZsgc3xPfv38+UKVMM9h4EoahEQrByAwcOZPDgwQQHB5ORkZHnuSVLllCnTh0aNWpEkyZNCAoKKtBUzq1atWLt2rXMmTMHX19f1q5dy/bt2/NcWy8IfevPzc1FkiRatmwJQNWqVfHy8ipU3Q9bsGABf/75J6Ghoc+8pq9PzGq1mhYtWnDo0CFq1679YDSysXtKCUKhyUKJ8NZbb8kvv/yynJubm+/rfHx85JCQkAd/N2rUSAZkQF65cmWB6/P09Hyw3759+/I8t2XLFrlfv34mq/9hoaGhcuXKleU7d+4UuGxTxywIRnJR3FQuIb766it69erFO++888wuqQ87fvy4XvUZaqlPY9Z/8OBBxo0bR1hYGL6+vnrV8ySmbjNB0Je4ZFRCKJVK1q5dy99//80XX3zx2PN3795FkiRiYmIYMGBAvqNujaG46z979iz9+/dn/fr1BAYG6lWGqdtMEAxNnCGUIE5OTmzZsoUXXniBsmXL0qdPnwfP+fr6FnjKC2Mozvrv3LlDcHAwixYtokWLFnqXY+o2EwRDEwmhhPH19WXHjh20b98eDw+PEjdS9t69e3Tq1Ilx48aJrp+C8AhxyagECgwMZMuWLQwaNOix8QTWLDMzk27dutG9e3exyI0gPIFICCVU48aNCQkJoW/fvpw9e9bU4RhdTk4Offr0oVatWnz00UemDkcQzJJICCVY27ZtWbp0KZ07d+b69eumDsdoZFnm9ddfx87OjiVLlpg6HEEwW+IeQgnXrVs3kpKS6NixI+Hh4fj4+Jg6JIObMGECN2/eZMeOHSiVSlOHIwhmSyQEgWHDhj2YZ+e3337DxcXF1CEZzMcff0xERARhYWFFWvFMEEoCcclIAGDatGm0bt2abt26mcWaBIbw9ddfExoays6dOws0JYYglHSSLDpSC/+RZZnXXnuNhIQENmzYYNC5+jt16vRguUhZltFqtQ8u39jY2BAVFYW/v7/B6tu8eTPvvvsu4eHhlC9f3mDlCoIVuyTOEIQHJElixYoVKJVKXnvtNYMOugoODgYgIyODzMxMsrKyyMjIICMjg/Llyxs0GYSFhfHOO++we/dukQwEoRBEQhDyUCqV/PTTT1y9epXp06c/9vyj02gXVL9+/Z6YYJycnBg1apReZSYkJKDVavNsO3r0KEOHDmXr1q16T0khCCWVSAjCYxwdHdm+fTt79uzJs3D8L7/8Qp06dfS6x+Dt7Z1nfeKHPTyFRmFMmDCB3r17k5ubC0BUVBTdu3dn5cqVNGrUSK8yBaEkE72MhCdydXVl9+7dtGrVCnd3dwDGjRuHRqPhxx9/ZOTIkYUu84033uD06dOkpqY+2Fa/fn29urrGx8fzyy+/ANC5c2e++eabB/MTPboWsiAIBSNuKgv5unLlCp06deL27dukp6cDujWbb9y4gUJRuBPM1NRUfHx8yMzMBMDZ2Zlly5YxZMiQQsf14YcfMn/+fDIyMnB0dMTd3Z2pU6cyevToQpclCAIgbioLz/Lzzz9z586dB8kAdAf2PXv2FLosFxcXWrdu/eBvjUbDyy+/XOhysrKyWLRo0YMV4DIzM0lMTGTZsmUkJCQUujxBEHREQhCeSJZlxowZw2effUZaWlqe51JSUvSeD+j111+nVKlSALRu3frBfxfG2rVrH7uZrFaruXz5Ms8//zyxsbF6xSYIJZ1ICMIT3blzhxMnTjz1+dOnT3Pq1KlCl9u5c2dyc3NRqVR63YeQZZmPP/44z32I+2xtbUlOTubo0aOFLlcQBJEQhKfw8/MjIiKC3bt307Bhw8ems1Cr1cyaNavQ5To4ONC1a1c0Gg1dunQp9P779u177LKQSqXC1dWVqVOncuPGjQdjHgRBKBxxU1kokP379/POO+9w+/ZtUlJSAN0YgkuXLlGmTJk8r01Lg6NH4fRpOHlK5uo1mehoiIuVyM6CjPQwFIofUdqsxsFRxt0dfH1lypWXqFNTonZtaNwYnjSm7IUXXuDw4cPIsoyjoyM2NjaMGTOGSZMm4erqWhxNIQjW6pJICEKBybLM5s2bmTBhAgkJCWRmZjJ+/HjmzZvHiROwYSPs2Sdz6SJUq5NLuWo5+FfOwbd8Lm5eWty8NTg5y2g1Gq6fP0vFmrXJyZJITVIQf1dBYoySW5dsiL5kx4WTttgoJdq2hV49JDp2hCtXztCgQQOUSiVKpZLRo0czdepUve5DCILwGJEQhMLTarX8/PPPTJw4iZSUTLx9orF3cqBxu0zqt1JTqVYOhphlOjZaSeQhe/7+zZFz/9ri5Tmc69dCeOutN5kxYwZeXl5Fr0QQhPtEQhAK78YNmD1HZsOGXMpWXUHTlzx4qX8bo9YZF53K0ulLuXf3Pcr6+TPrY4kSthy0IBibSAhCwWVmwqzZ8M0KmY4D0ukyJA0nl+L9+MgyHNnnwKblrgSUVbB8qUTVqsUagiBYK5EQhII5ehT6D5SpUj+LgROScfXQPnsnI5K1sHe9E5uWuzJlMox/V0KSTBqSIFg6kRCEZ1v0lcync2VGfpREw1ZZpg4nj8QYJUsmu1PGw4bQdRJWtNibIBQ3kRCEp5NlmDBR5tc9GiYtT8SjtMbUIT2RVgM/LyjF5ROO7NsjYYXLQgtCcRAJQXi6ie/J7DuYy6RlCTiqzP9jsu17Z47tcibioISbm6mjEQSLIya3E55s+XKZbbs0vLfUMpIBwMuvplGrRQbdeshoTXuLQxAskkgIwmPOnIEPP4IJixNxcraMZHBfv7EpZJLD7E8tK25BMAfikpHwmBatZBoFJdO6e6apQ9FLcoKCST1Kc+yIRECAqaMRBIshLhkJee3cCfFJGlp1s8xkAFDKU0vQsDSmzxC/dQShMERCEPJYvFQm+JVUi+/T33FAui65xZs6EkGwHCIhCA8kJcFfh6FJO/3HGuTm5LBq7kxeeaEuQ5oE8tEr/Thz7HC+z40LbkuvQD96Bfqx6+eVHNi8Ps/f+nBwkmnSNostW/R+K4JQ4tiYOgDBfBw+DNXr52Brp/+lltXzPuL47/uZ8e1aylapxoWTJ/hi/Ft8d/CffJ9b8dFUIg+F82LPftjZO3B4zw5GTP2IMhUq6h1LYBM1v4fb89prFn66IwjFRNxUFh5YsAD+upjOgHdT9No/LTmJV5rX5fWZc2nfZ2CBnwPIVquZ2LMjNRs/T5mASjg5u9Ch72C94rjv+nlbVn/kwb8nxImwIBSAuKks/F9sHDi76z8aOfrqZTSaXMpXq16o5wDsHBwYN38pBzaHcvrIoSInA4BSnhoS4sXZgSAUlEgIwgM2NrrpKvSW384FKLi0fzk8ff24dOpfkhLiihCIjlYjoRCfcEEoMPF1ER7w8oS0e/qvbONfuSpKpQ03Lpwv1HP3ffvxNN5dsIxyVaqzbPoEveO4LzlRgaenuCIqCAUlEoLwQJ06cP2snd77O7uW4qUBQ9m0YjFXz54hJzubv8N/Y2SrBtja2j71uazMDH7f8gvlqwVStW4DxsxbxLm/j7InZHWR3s+VM7bUqycuGQlCQYleRsIDzz8PF0/bkKWWsHfQ75f1sMkforSx4eNX+6POSCegei0mLf4ee0enpz735cS3ORq2B4BOA4YTsuhz0lNSWPHRVI6G7WHGd2v1iuXsUXuG9RQJQRAKSvQyEvLo3lOmQtNkWlvwSGWAjFSJMZ18uHpZolQpU0cjCBZB9DIS8hozWuLXH1zQmufSBwW260dnevZAJANBKASREIQ8XnwRKpZXsP8XJ1OHoreEu0r2hKj4aKa4XCQIhSESgvCYr5dJbFzmyu1rlneLSauBJZPdmT4N/P1NHY0gWBaREITHVKkCCxdILBjtQco9y/qIrJpTirLeNowbK84OBKGwLOvbLhSbIYPh1eEK5o7ytIikIMsQ8oUrMRccCV0nWfxsrYJgCub/TRdM5v3pEoP6KPlwsBd3b+g/YM3YcnMkvpnhRvRpJ/bullCpTB2RIFgmkRCEfM14X+KTD5R8ONibQzsdTR3OY+7esGHGQC887Rz4bb+Eu7upIxIEyyXGIQgFEhUFffvLlCqTzdApyXj7mbZfak62xPaVzuz+ScW8ORKvvmrScATBGohxCELB1KwJ//4t0bOjHdP7ebNmbinuxRX/x0eTC2G/ODGui5LsaBWR/4pkIAiGIs4QhEJLSID5C2DFt7kENrpGl6HuBDbMNuqN3Pg7Sg5scuLABidq1LjC2TNtOXBgLzVq1DBepYJQslwSCUHQiyzLDBnyCteu25CavoLYWJnn2qup30pN9QbZODgV7WOl1cD1C7acOmzHiTAnYm8pGTwY3hglUbUqbNq0iTFjxrB3715q1qxpoHclCCXaJcsbeSSYhffee487d26wf98OHBwkrlyR2LDBid0hDnw5XsKvgpby1XPwq5SNbwUNbl4aPEprsXeSsbWTsbGVyUxXkJsDKYkKEmOUJNxVEn3ZllsXbbl02oay5WXavSixZIFEixagfKijU8+ePdFqtXTs2JH9+/cTGBhousYQBCshzhCEQpsxYwb79u1j//79ODs7P/Z8bi5ERsLp03DqNFy+KnM7WiYmViIzHTIybqPV3sDOvikuLuDmLuPnB+XLStSuJVGrFjRqVLB5iEJDQ5k8eTJhYWFUqlTJCO9WEEoMcYYgFM5XX33F1q1b+f3335+YDEC38lrDhrp/OtJ//3S2bj1OSEgI69Y1e+h5/fTt25eMjAw6dOhAREQEvr6+epclCCWdSAhCga1atYolS5YQHh6Oh4eHqcN5YPjw4SQmJhIUFER4eDgqMTJNEPQiup0KBbJp0yY++ugj9u7da5a/wsePH0/z5s3p168fGo2Fz90tCCYiEoLwTHv37mXs2LHs2rWLgIAAU4fzVF9++SU2NjZMmFD09ZgFoSQSCUHIV0REBCNGjGDr1q1m35NHqVSydu1aDh8+zFdffWXqcATB4oh7CMJTHT16lF69erFhwwYa/v8OsVlzcnJi8+bNvPDCC1SpUoUuXbqYOiRBsBjiDEF4oqioKHr06MFPP/1EixYtTB1Oofj5+bFhwwZee+01rl27ZupwBMFiiIQgPObmzZt06dKFxYsX0759e1OHo5dGjRoxc+ZMunfvTmZmpqnDEQSLIBKCkEdycjLBwcFMmDCBnj17mjqcInn99depV68eU6ZMMXUogmARREIQHsjMzCQ4OJgePXrwzjvvmDocg1i2bBm7d+9m586dpg5FEMyeSAgCABqNhsGDB1OzZk1mzpxp6nAMRqVSsXLlSt544w0SEhJMHY4gmDWREARkWWbUqFHk5uaydOlSU4djcM2bN2fw4MGMHz/e1KEIglkTCUHg/fff5+LFi6xfvx4bG+vsifzhhx9y9OhRwsLCTB2KIJgtkRBKuK+//ppt27axZcsWHBwcTB2O0djb27NkyRLeeustsrKyTB2OIJglkRBKsC1btjB37lx27tyJewlYnb5du3Y0bNiQxYsXmzoUQTBLIiGUUL///jujR49m9+7dlCtXztThFJs5c+Ywf/58cYNZEJ5AJIQS6OTJkwwcOJCNGzea/fxEhhYQEMCgQYOYM2eOqUMRBLMjEkIJEx0dTbdu3fj22295/vnnn/n6xo0bI0kSkiSxatWqAtfj5eX1YL/9+/frHa8x6p82bRo//vgjMTExesclCNZIJIQSJCMjg549ezJx4kSCgoIKvN/06dORZZnhw4cDuhlQg4ODcXFxwcvLi6CgIE6dOpVnn/j4eFJTUw0S96P1g259hho1auDg4ED9+vUf6z2UX/2enp4MGzaMhQsXGiQ+QbAWIiGUEFqtloEDB9K8eXNGjx5dpLLatWtHnTp1uHnzJidPngSgQ4cOJCYmGiLUZ4qIiKB///5MmjSJ27dv07dvX4KDgzl37lyBy5gwYQIrV64kLi7OiJEKgmURCaGEePfdd8nJyWH+/PkPtiUlJdG7d2+cnJwICAhg/fr1+Pr6IkkSEydOfGpZPj4+fPrpp7i5ueHv78/ChQuJiYnh4MGDhYpJ3/rnzJlDUFAQI0aMwMPDg2nTphEYGJjnvT2Lj48PAwYMED2OBOEhIiGUACtWrODgwYOsX78epVL5YPvo0aOJjIzk2LFjnDhxgrCwMJKTkwkJCcn34Hr9+nUkSXrwd6lSpQAKPY5B3/rDw8Np3rx5nm0tWrQgPDy8UPVPmTKFFStWkJSUVKj9BMFaiYRg5Xbt2sXs2bPZtm0bzs7OD7bHxcUREhLC1KlTqVWrFp6ensybNw+1Wl3oOsLCwqhSpQrt2rUr8D5ZWVl61Z+amkpqaire3t55tvv4+BAdHV2ouMuUKUOPHj1YsmRJofYTBGslEoIVO336NCNHjmTr1q2ULVs2z3MXLlxAq9VSs2bNB9vc3d3x9PQsVB1JSUl8/PHHrFmzplDTXqSmpupVvyzLAHnOUO5vf3RbQUydOpWlS5ca7Aa4IFgykRCs1O3bt+natSvLli2jfv36jz1//8D6KI1GU+A6UlNT6dGjB7Nnz6ZZs2b6hlqo+l1dXXFxcSE2NjbP9tjYWPz8/ApdX/ny5encuTNff/11ofcVBGsjEoIVSktLIygoiAkTJvDyyy8/8TXVq1dHoVAQFRX1YFtcXFyBr6dHR0cTHBzMtGnT6N27d6FjdHFx0bv+li1bcujQoTzbIiIiaNWqVaHjAF231i+//JKMjAy99hcEayESgpXRarUMHjyYNm3a5Nu91NvbmwEDBjB37lyioqJISEhgxowZqFSqZ9YRGRlJ3759WbZsGR06dABg//79hVqZzN7eXu/6J0+ezI4dO1i9ejX37t1j3rx5REVF6T29deXKlWnTpg3fffedXvsLgrUQCcHKjBs37rHupU+zZMkS6tSpQ6NGjWjSpAlBQUF5bjw/iVqtpkWLFhw6dIjatWs/GA18PzEUhj71A7Rq1Yq1a9cyZ84cfH19Wbt2Ldu3b89zP6Kw3n//fT777DO9bqoLgtWQBauxaNEiuUGDBnJqaqreZfj4+MghISEP/m7UqJEMyIC8cuXKApfj6en5YL99+/bleW7Lli1yv379TFb/0/Tq1Utevnx5gesQBCtz0TpXQymBduzYwcKFCzl06FCBfmUX1PHjx/XaLz4+3uLqnzFjBt26deOVV17Bzs5Or3oFwZKJS0ZW4MyZM4wcOZItW7bo1dMG4O7du0iSRExMDAMGDMh3pLAxmLp+gHr16lG3bl3Wrl1b7HULgjkQZwgWLjExkR49evDFF188sXtpQfn6+j61K2pxMHX9902ePJk33niDYcOG6TWuQRAsmThDsGA5OTn06dOHwYMH069fP1OHYxVeeOEFnJ2d2bt3r6lDEYRiJxKCBRs7dixubm7MmDHD1KFYlXHjxvHFF1+YOgxBKHYiIVioZcuWcfjwYdasWSMubRhY7969uXjxIpGRkaYORRCKlUgIFujgwYPMnTuXbdu2FWggl1A4SqWSN998U0yNLZQ4IiFYmGvXrtG/f39++uknypUrZ+pwrNb9SQEfnTNJEKyZSAgWJDU1la5du/LRRx/pPW+PUDClSpWif//+YjoLoUSRZHPo6yc8k1arpXv37lSrVq1QK4OZi127dpGWlgbAsWPHiIiIYNy4cQ+eb9euHR4eHiaK7snOnj1L586duXz5cp6FhQTBSl0SCcFCTJo0iZMnT7Jz506LPDgNGDCATZs2YWtrC/x//QKtVgvoxlMUdsW14tC6dWsmT55Mly5dTB2KIBjbJXHJyAz17NmTEydOPPj7xx9/ZPv27Y8tgWlJRowYgaOjI+np6aSnp5ORkUF6ejpqtZrg4GCzTAYAb7zxhlgrQSgxxBmCmbl8+TK1a9dGoVCwbNkyateuTbdu3Thw4ABVq1Y1dXh602g0eHp6kpycnGd7qVKl+OWXX/SaLbU4ZGdnExAQwKFDhwgICDB1OIJgTOIMwdysXr0aWZbJyMhg9OjRDBw4kG+//daikwHounL27dv3sTMcWZZp27atiaJ6Njs7O4YOHcr3339v6lAEwehEQjAz33//PVlZWYBu5bPo6Gg++OAD4uLiTBxZ0Y0YMSLPTKwKhYJ+/foVai1mU3jttddYvXr1g/sdgmCtREIwI8eOHXvQE+e+9PR0IiMjqVu3LqdPnzZRZIbRrFmzPPcKnJ2deeWVV0wYUcFUqVIFf39//vjjD1OHIghGJRKCGfn+++9JT09/bLuNjQ0KhcIqBkkNHTr0QU8jOzs7nn/+eRNHVDCDBw/mp59+MnUYgmBUIiGYCY1Gw7p169BoNA+2KZVKVCoVo0aN4vLly7z44osmjNAwRowYgb29Pba2towYMcJi5mEaMGAA27ZtIzMz09ShCILRiIRgJvbv35/nb5VKRd26dTl69CgLFy40226ZhVWjRg08PT2RJImhQ4eaOpwC8/DwoHnz5mzfvt3UoQiC0Zj33TwLEBcXx927d7lz5w7JyckkJSXlWejFyckJFxcXSpcuTZkyZfDz83vi8owrVqwgJSUFe3t77O3tmTdvHqNGjbKYX9BPk5UF16/D3bsQEwMpKVCv3qukp6/i0KHanD4NpUpB2bLg7w9mNlg5j8GDB/Pjjz/St29fU4ciCEYhxiEUkFar5ezZsxw+fJi/9u/n9L//cuHGDZwUCvxsbfGRJErn5mIjyzjn5mILpEgSGltbUiSJ2woFsRoNt9Rq/Dw8qFG9Og1bt6ZZixbUrVuXChUqoNVq6d27N0uWLDG7aRwKIjcX/vkH/giHgxFaTp+SiI2B0n5aPH20uHlrsLGV0WhvcPtaKGUrTQQZkhOU3ItVEndHgSRBzZoyzzVR0KY1tGwJrq6mfmc6GRkZlCtXjmvXruHi4mLqcATB0MTUFflRq9Xs2LGDHaGh7Nq9G29JollODs0yMqgDVAcKu5y9FrgOnAWOKpUcdnEhIj0drULB8BEjmPjee1SqVMnQb8VoNBrYswfWh8rs2Aml/TRUb5RF9YbZVKieQ2l/DdITLkxmZWZg7+j02PbUJAU3Lthw8ZQdF0/Yc/YfWxo0hH69Jfr1A3f3YnhT+ejWrRtDhw6lV69epg1EEAxPJIQnOXnyJMsXLGDT5s08r1DQPSWFLkAZI9X3J5AB7LG3J9TGhoqVK/PKuHEMGDgQe3t7I9VaNPfuwZKlMt+sAC//XJp1yaBJOzVunobtq5+TLXHqsB1H9zlx/Dd7goJh4niJevUMWk2B/fDDD/z++++sWbPGNAEIgvGIhPCwgwcP8smkSVw6fZrRGRkM1mopXcwxaIAw4GsXF44qlbwzcSLvvPsuTk6P/5o2hfR0mDMXvv5aplmnTDoOTMe/Um6x1J2RKvH7Fid2rnamcSOJeXMkatQolqofiI2NpXbt2ty+fdvsB9QJQiGJqStAN39Qz44dGdmlC6/+9RcX09IYb4JkAKAEOgKbUlM5kJTE+U8/JbBcOVatXImpc/fWrVC9hsyJS5nM3RjHiPeTiy0ZADi5yHQZks6Xu2IpUz+FVm1lJk2G4uwJWrp0aapVq8aff/5ZfJUKQjEp0WcIWq2WxV98wdwPP2SqWs2bGg22pg7qCU4CY5ydsa1Vi+/Xr6dChQrFWn9GBox+R+aPCC2vf3KPqnVzirX+p0lNUvDT567cOuvAhlCJWrWKp965c+dy79495s2bVzwVCkLxKLlnCMnJyQS3bcuvM2dyJD2dMWaaDADqAQfS0uh2/DjN6tZl165dxVb3nTvQtLnMnQw1s9fHmU0yAHBx0/Lm7CSCXkumbTuZnTuLp962bdvy+++/F09lglCMSuQZwq1bt+jYvDndYmOZnZVlUaPz/gZ6qVRMnD2bt8eONWpdN25Aq9Yy7Qem0WVo2rN3MKGrZ235/G0PFs5XMHCAcevKzc2ldOnSXLt2DVdz6RMrCEVX8s4Qbt26Rdvnn2fsnTvMsbBkANAQOJSezpLp01nyxRdGqyc+Htp3lAl6NdXskwFAxRo5fLAqgXcnaNm927h12djY0LRpU3EfQbA6lnY8LJLMzEy6tWvHmJgYRuUW381QQysDhKWn88WMGez49VeDly/LMHCwTKOO6bTr8/hke+bKt3wu7y1NZOhwmevXjVtXmzZtxOyngtUpUQnh3VGjaHDzJu88NIGcoTQGpP/+rSrEfl4P7bf/Ga99mB+wIT2dkYMGcfPmzULs+WzLlkFsci6930w1SHnrlyygV6Af/esGGKS8/FSqmUOPN1IYOFjGmBdDC5sQGjdujCRJSJLEqlWrCryfl5fXg/0ene9KEAytxCSEY8eOsWfTJhYZsY/idEAGhv/3dwQQDLigO/AHAace2Sce0Pew2wAYl5HB+JEj9SzhcUlJ8NEnMiM/SnriCGN99Bs9galfrzZMYQXw0oAMUtS5bNxovDrq16/P2bNnyckp+E326dOnI8syw4cPf+y5RYsWYWtry6VLl/Jsj4+PJzXVMIlZEJ6lxCSE90aN4vP0dFTFWGc7oA5wE13XUYAOQKIB6xiXm8vJiAiOHz9ukPKWLZNp0k5NmQqWe0kNoO/YFGZ+bLxTBDs7OypVqsS5c+eKVI5arWbo0KGEhoaSa8GXMQXrUCISwunTp7l58SI99dw/CegNOAEBwHrAF91lnon57OcDfAq4Af7AQiAGOKhnHE9iB4zJyGDJ3LlFLkuW4dvvoX0/4903OHX4T97u2JwhTQJZMXOK0Qbb1WqSTUaWFgPlySdq0KAB//zzDwBJSUn07t0bJycnAgICWL9+Pb6+vkiSxMSJT/+UnD59miFDhogxDYJZKBEJYcvGjQwoQo+i0UAkcAw4gW5qiWQgBJifz37X0SWN+0r997+GXtlgoFbLr7t3F3nN34sXQZZkKlQ3zlgDrUbL3+G/8dmG3Uxdtoq9638k8rAh02NeTTpksmOH8c4S6tev/yAhjB49msjISI4dO8aJEycICwsjOTmZkJAQ5s9/+qekcePGdOjQwWgxCkJhlIiEcHDnTtoU4lrvw+LQHfinArUAT2AeoNajrDCgCrpLSYbkAZSzseHUqUfvUBTO4cNQvUG2YYJ6Ao0ml+BhI1G5ulKzSVP8K1XhxvmzRqsvsGE2ByOMVvyDM4S4uDhCQkKYOnUqtWrVwtPTk3nz5qFW6/MpEQTTKREJ4dqNG1TVc98L6KasrvnQNnd0iaEwkoCPgTUYZ1WiqsD1Iva1vHETPP2NNxJZqbTB0/f/c8aqXEuRkW68MQ4+5TTcijbeGULNmjU5f/48Fy5cQKvVUrPm/z8l7u7ueHoW9lMiCKZVIhJCcno6bnru+7TDSWE6rqYCPYDZQDM943gWj9xc7t27V6QykpN1E8gZi0KZ9+Nm7NXgnFy0JCcZrw5PT08yMjKeus6yxgjdmwXBmEpEQnB1ciJZz32ro2ukqIe2xaH7xV8Q0ei6nk5Dd2PaWJJsbHBzcytSGa6ukJlm2Ut2PiwjVcK1lHFnZqlQoQJOTk4oFAqiov7/KYmLiyMpKcmodQuCoZWIhFDWz4+reu7rDQwA5qJLCgnADChQ99VIoC+wDF13U9ANPpuiZyz5uSpJ+Pv7F6kMfz+4d9d65viPv6OkjLFWNfpPxYoVSU5OZsCAAcydO5eoqCgSEhKYMWMGKlVxdnIWhKIrEQmhRadOhBdhMZMl6MYTNAKaoBtg9qylM9VAC+AQUJv/j0Y2Rn+SVOBiVhb169cvUjnPPw8X/rUzSEwP2/XzSua8MYyc7Gx6BfqRnpLCO51bcu7vY4QuWcDiKeMMXifo3ssLTY37Ea9YsSJXr15lyZIl1KlTh0aNGtGkSROCgoJwdn72Aqu5ublIkkTLli0BqFq1Kl5eXkaNWRCexnp+DuYjuHt3RixZwvupqehzQcQN2FCA183+799KdKOVUwqwjxe6s46i+EWSaN+6dZFX8KpZEzJSFdy5bmPQgWmdB42g86ARebYt3mW87qb3Hd/vyKilxq2jQoUK3LhxAzc3NzZsyP9TMnv2bGbPns3KlSsfjFa2sbHJdyyGl5cXCQlF/YQIQsGUiITw3HPP4VSmDPtSU+lopDr0Hf8UX8R6tcAiZ2e+mlL0C1EKBYwYLhH2ixODJxYknZmvy2dsyclU0qKFcevx8PDg7Nlnd53VdyR5fHxRPyGCUHAl4pIRwKdLlvCuszNF7VR5F92lnxh09xbyG6lcHL5TKChdsyatW7c2SHnjxkL4Vifi7ygNUp6prP/SlfenSxi5IxMeHh4kJuadjOTu3btIkkRMTAwDBgzId6SyIJiTEnGGANChQwdqtWrFB2FhzMnK0rscX57eFbW4XQJmOjnxWyFmz3wWb29dUlj9aSkmLDbkrEvF59BOR7KSbRk6xPh1PSkh+Pr6mnz9a0HQR4k5QwBY8fPPbPL0ZL2xfzYWgySgp7MzcxcvJjAw0KBlT5kskZNix+6fLa+XzN0bNqyZV4p1ayWUxXCS4+HhUeTxH4JgLkpUQnBzc2NrWBgT3dzYZMFJIRl4SaWi2xtvMPQJUykXlY0NbAiV2LnKhaP7DD3zkvEkxSuY87onXyyQqFWreOp80hmCIFiqEpUQAAIDA9kbEcG7Hh58VcReOaZwGWjh7EzHt97ik88/N1o95cvDnl0Sqz91488djkarx1Bibyn5aJgX48dKDBpUfPU6OTk9daSyIFiaEpcQAGrUqMHhyEh+rlaNwU5OBR51bGobJIlWzs5MXLSITz77zOj11aoF4X9IbFpSig1LXdCa6UwMZ47aMXOIFzOnK3l3XPGe+SmVSrGOgWA1SmRCAPDz8+OPEyfwHzmSeioVRlxcq8huAQNUKj6pWJEdBw8y7JVXiq3uqlXh+FGJxEsqZr3qxd0b5tP7KCdLYt2Xrnwz3YPQdQpGjHj2PoZmY2Mj5iwSrEaJTQgADg4OzPvyS0LDwvi8Vi1auLpiTsumxwPTbG1prFJRZ8IEjp09W+TRyPrw8oJdOyRGDrZl5mBvQpe4kJluunswsgxH9jkw4eXS2KQ6cfIfiVatTBOLjY2NOEMQrIYki/5xAMiyzC+hocyeOhWHhATGpaTQHTDF1fNTwHJHRzYoFAwcPJhpH39M6dKlTRDJ42JiYNp0mW3boeOAdDr0S8fVo2gL8xSUJheO7Hdg27euuDkrWPC5xH8zPpiUo6OjuI8gWINLIiE8QpZl9u7dy7J58zh85AjdgB4ZGbTFuMnhLPCrQkGIszNpKhUj3nyTUW+/jYeHhxFr1d+1azDvc5nQUKjTNItmXTKp/0IWtvaG/zhdibLlyB5Hwrc6Uru2xKSJEi+9ZPBq9CYSgmAlRELIT1xcHL+EhrLtp584dvIkTeztaZqWRtPcXOoCfnqWmwmcA44Ch52dOQgonZ3p2rMnvQYNonnz5oZ6C0aXng6hofDzOpnjx6BWoxyqNVIT2DCb8tVysXcs3MdLq4G7N224eNKW8yfsOfWXPa7OEn17w7BhEpUqGemN6Emr1eLi4kJ6uvHWoRaEYiISQkGlp6dz6NAhDv/5J0f27+fM+fMkp6VR1dGRMoBvTg7uWVm45eYioRsCngtkACmOjsTa2XFbkriu0ZCYk0O1cuVo1KwZTV98kRdeeIEqVaqY9P0ZQlIShIfDgd/hz0Nazp+VKOUh41tOg5u3BhcPDY4uWhQKUChltBoJdbpERoqSe7FKEu4quXnlAv7lAmnSGF5sI9GmDZhz02RkZFCuXDkxAZ1gDURCKIqMjAwuX77MrVu3iI2NJTY2Fq1Wy734eMjNxdHNDQcHB5ydnfHz86N06dJUqFCBsmXLmjr0YnPtGty4Abdu6e4/ZGfDvSTQasHVBWxtwcdH969sWS3BwZXYvXsXNWrUMHXoBZKQkEDdunWJjo42dSiCUFQiIQjmZebMmaSnp/O5EQfdGVJ0dDStW7fm0qVLpg5FEIrqUonudiqYn9dee40ff/yRrCJMQFicMjMzcXCwnOk9BCE/IiEIZqVs2bI0btyYLVu2mDqUAlGr1Tg6mv/UHoJQECIhCGZn5MiRfPvtt6YOo0ASExNxd3c3dRiCYBAiIQhmJygoiPPnz3Px4kVTh/JM8fHxYg1kwWqIhCCYHRsbG4YPH84PP/xg6lCeKSEhAU9PT1OHIQgGIRKCYJZGjhzJmjVryMkp6qKnxhUfHy8SgmA1REIQzFL58uWpW7cu27ZtM3Uo+RJnCII1EQlBMFuWcHM5ISFB3EMQrIZICILZevnllzl9+jSXL182dShPFRMTYzYz0QpCUYmEIJgtGxsbhg4dyqpVq0wdylPdvHmTcuXKmToMQTAIMXWFYNauXr1KixYtuHbtGra2tqYO5zHu7u7cunULlUpl6lAEoajE1BWCeatYsSI1a9Zk586dpg7lMenp6SgUCpEMBKshEoJg9sz15vLNmzdL1My1gvUTCUEwe927d+fvv//m+vXrpg4lj1u3bomEIFgVkRAEs2dnZ8eIESNYvny5qUPJIzo6Gn9/f1OHIQgGIxKCYBHefvttVq5cSUZGht5lNG7cGEmSkCSpUD2XvLy8Huy3f//+B9uvXr1KxYoV9Y5HEMyNSAiCRfDz86Nly5asX7++SOVMnz4dWZYZPnz4g22bNm2iRo0aODg4UL9+fcLCwvLsEx8fT2pq6mNlXb58mcqVKxcpHkEwJyIhCBZj9OjRLF682KBlRkRE0L9/fyZNmsTt27fp27cvwcHBnDt37pn7Xrp0SSQEwaqIhCBYjDZt2qDRaDh8+PATn09KSqJ37944OTkREBDA+vXr8fX1RZIkJk6c+MR95syZQ1BQECNGjMDDw4Np06YRGBjI/PnznxnP5cuXqVSpUpHekyCYE5EQBIvy5ptvsmTJkic+N3r0aCIjIzl27BgnTpwgLCyM5ORkQkJCnnqADw8Pp3nz5nm2tWjRgvDw8HzjSE1NRavVisVxBKsiEoJgUYYOHcr+/fu5fft2nu1xcXGEhIQwdepUatWqhaenJ/PmzUOtVj+1rNTUVFJTU/H29s6z3cfHh+jo6HzjEPcPBGskEoJgUZycnBg4cCDfffddnu0XLlxAq9VSs2bNB9vc3d3znZr6/qwtkiQ9tv3RbY8S9w8EayQSgmBxRo8ezYoVK/IsnvO0Kbk0Gs1Ty3F1dcXFxYXY2Ng822NjY/Hz88s3hkuXLlGlSpVCRC0I5k8kBMHiVK5cmbp167Jp06YH26pXr45CoSAqKurBtri4OJKSkvItq2XLlhw6dCjPtoiICFq1apXvfmfPniUwMLDwwQuCGRMJQbBIb7/9NkuXLn3wt7e3NwMGDGDu3LlERUWRkJDAjBkznjnx3OTJk9mxYwerV6/m3r17zJs3j6ioKMaPH5/vfufOnRMJQbA6IiEIFqlLly7ExMRw4sSJB9uWLFlCnTp1aNSoEU2aNCEoKAhnZ+d8y2nVqhVr165lzpw5+Pr6snbtWrZv357nXsSTXLhwgWrVqhnkvQiCuRAJQbBIkiQxatQovv766wfb3Nzc2LBhA5mZmVy5coWuXbs+tt/s2bMfm7qid+/enDt3jqysLE6ePEmHDh3y7OPl5YWLi8uDv2/fvk2pUqWemWwEwdLYmDoAQdDXK6+8QtWqVZk7d26BFro/fvy4XvXEx8fn+TssLExcLhKskjhDECyWm5sbPXv2ZOXKlY89d/fuXSRJIiYmhgEDBjx1pLI+xP0DwVqJMwTBor399tv06NGD8ePHo1D8//eNr6/vU7uiFtW5c+eoVauWUcoWBFMSZwiCRatbty7ly5dny5YtxVbnqVOnREIQrJJICILFe++995g7d26x1CXLMpGRkdSvX79Y6hOE4iQSgmDxOnfuTHZ2Nn/++afR67pw4QK+vr55eh0JgrUQCUGweJIkMW7cOD7//HOj13XixAkaN25s9HoEwRREQhCswqBBg/j333/zTF1hDMeOHaNRo0ZGrUMQTEUkBMEq2NraMnr0aBYuXGjUen7//Xdat25t1DoEwVQk2Vh98wShmKWkpFC1alX++eefZ85Wqo/ExESqV69OTExMni6ugmAlLolPtWA1XF1dGTp0aJ51l0+dOvXM1c/y88Ybb7BhwwbS09P5448/aNGihUgGgtUSZwiCVYmOjqZBgwasW7eOWbNmER4ezqhRo/LMjFoY7u7u5OTkoNFoKF++PK1ateKzzz4TS2cK1kicIQjW5erVq3h7e9OtWzf++OMPNBoNFy9e1Ls8Gxsb0tPTUavVXLhwgXXr1uHn58fzzz9PaGioASMXBNMTU1cIVmHPnj1MmjSJq1evkpaWlmfaips3b+pdrp2dXZ6/09LSAPjnn3/w8PDQu1xBMEciIQhW4c6dO5w7d47s7OzHnrt7967e5dra2j62TaVSMWbMGNq3b693uYJgjsQlI8EqDB8+nJUrVz5xjYL09PQ86y8XxqNnCDY2NtSsWZNPPvlEr/IEwZyJhCBYjYEDB/LNN988lhQcHBy4c+eOXmU+eobg4uLC1q1bUSqVescpCOZKJATBqjwpKdjY2Oh9H8He3v7Bfzs5OfHLL79QpkyZIscpCOZI3EMQrM7AgQMBGDVqFGlpaeTm5hY5ITg7O/Pee+/Rrl07g8UpCOZGJATBKg0cOJCsrCzGjBlDRkYGN27c0KscBwcHlEolDRo04P333zdwlIJgXiwuIeTk5HDhwgXOnj3L2fNnuXrnKteirxGfEE9GRgYajYbc7FzsHO2ws7HD3dMd/9L+VPavTNWKValZsyY1atTAzc3N1G9FMLIRI0Zgb2/P4MGDiYy8yP79cOYMXLoiE30bYmJk0tJAo4GcHAkHexl7B/DygnL+EuXKSSQlOeDiUooNGzaJEcqC1TP7hJCbm8uff/7Jr3t/Ze+fe7kYeRH7ivbIgTLpgeloGmqgM1AasAVc/9tRDWQCKcBt4C6ojqmwW2NH5plMvHy8aNm8JcFtg+ncubMYeWplkpLg119h154BuHuo2bBxGxejc/Cvko1nmVyqB2p5zlODrS04uWgByFJL5GRLJCcoSIpXcvq2kjvxpXF02Ur1Gp40baal/YsKenSHSpVM+vYEwSjMcuoKWZYJDw9n8Q+L2b1zN7aBtqR0SUHbUguNAYeiVgCcAw6By14XcsNyqVG3Bm8PeZu+ffo+seuiYP5yc2H7dli+QuboEajXPJt6LTOp2Tib1KS/qVy7XqHLjL11g9Jly5OWouDcCTtOH7bnWJgDnp4Sr42QGDYMxG8JwUpcMquEoFar+WHVD8xaOIsM9wxSRqQg95bBy8gV5wD7wXmVM/JvMoMGDmLa+GlUqFDByBULhpCZCd98A5/Nl/GrlMuLfdJo1DoLW3vjfLRlGS5F2nJgg4ojYQ707w/Tp0qULWuU6gShuJhHQtBoNKz4bgXTPp5Gbotc0ianQUMTBRMPtottsf3Glt7dezP/k/l4e3ubKBghP7IMP/4Ek6fI1GicRfdRqZStnFusMaSlKNi5RsW+dSpeGQEffiAhTjAFC2X6hHDixAn6vdqPmDIxpC1MgxqmjOYhqWA/1x67H+z49INPefuNt5EkydRRCf+5eRMGDZG5l57LKzOSqVBdv5HIhpKWrGDdl66cPOjA6pUSYlYLwQKZLiHIssxHn37EwuULSVuchtzD5CcqT3YFVCNU1HOsx+Y1myldurSpIyrxtm+HV0fKdH89lZcGpmNOefrc33YsneLO0EESs2dJiI5JggUxTULIyMig77C+hCeFk/pzqq6HkDnTgs0cGzx+8CBsaxi1a9c2dUQl1rJlMrPmyExYnEjFGqY9K3iatBQFiye6U6G0LT//JPHQYGdBMGfFnxAyMjJoHdSaM9XOkLk00wI6vv6ftFnCdbQrB349QIMGDUwdTomzZInMgq+0TPs2AU9fjanDyZcmF5ZPd8dJa8+WTRI2FvQ5F0qs4l0gR6PR8FKvlzhT4wyZX1tWMgCQe8ikfJ/Ci11fLNKiK0LhbdkCcz6Xmf6d+ScDAKUNvPXpPe6ps3nrbTO9HCoIjyjWhDBt5jT+tf1Xd2ZgRtd9C0PuJJM8J5lOvTuRmZlp6nBKhJs34fU3ZCYuTsTDx/yTwX0KJbzz+T32/6FlvVhcTbAAxZYQjh07xrIfl5G2Os2wyaAxuvIkYFUh9vN6aL/9hatSHiJzp8kdpnw4pXA7Cnp5822Z4BFpJu9JpA87B5l3Pk9kzBiZ5GRTRyMI+Su2hPDK2FdI/ywdjDGqczq60cfDH9q2CV0XVgegPhD2yD7xQKr+VWZ+lsn3P33PpUuX9C9EeKaDB+FUlJbOg9NMHYreKlTL5bmOmcyZa+pIBCF/xZIQIiIiuJF5A7lvMV1LjQD6A5PQzWPUFwhGN12FoXhA1ugsPlv8mQELFR71xSKZl19LRWlh95se1e21NL7/XiYry9SRCMLTFUtCWLJyCamvF+HneDYwHvAB3IAOwB/5vH4OEASMADyAaUAgMF//EJ4k99VcQkJC9F6eUchfSgocOADNO6kNUl5uTg6r5s7klRfqMqRJIB+90o8zxw4DMC64Lb0C/egV6Meun1dyYPP6PH8XlYePhsq1c9i1q8hFCYLRFEtC2Ld/H3KXIpwdTAS2ALuBGOB9YEA+rw8Hmj+yrcV/2w3JB2wq2/D3338buGAB4K+/oGqdHOwdDXNmuXreRxzZv5sZ367lh4hIer85ji/GvwXAl78e4KUBwyhToSIv9uxHm259aNSmPUv2RNB50AiD1F+rmZrffhc9jgTzZfSEkJCQQGZWJug7T1wisBzdr/wGgD3QGt2loCdJ/e/fo9MP+QDResaQD/Xzao4fP274ggVOnoQKBhp8lpacxJ6QNfQaNYaKNWtja2dHrSbN+O7gPw9eM3zyhyiUSlbO+ZBtq76hyYsdKVOhokHqB6hcO4e//xYJQTBfRk8IsbGx2JWx07+A80AuUNDBwfe/b4/2ZJKfsM0A1GXU3InVbwF3IX8xsVDKyzDdTKOvXkajyaV8tepPfY2dgwPj5i/lwOZQTh85RIe+gw1S931uXhri4g1apCAYlNETQm5ubtEGoBX2B5Ur4ALEPrI9FvArQhxPYwdZOeJOoTHk5MoolQb6RV3AAfml/cvh6evHpVP/kpQQZ5i6/2NjCznZFjoARygRjJ4QPD09yY0rwpTENdAllNOF2KclcOiRbRFAK/3DeBrbOFvKeJUxfMECXp4SqUmG+Yj6V66KUmnDjQvn833dtx9P490FyyhXpTrLpk8wSN33pdxT4OklLhkJ5svoCcHX1xc5TdbdC9CHO/Amup5D/wJZwC7AH0h/yj6TgR3AauAeMA+IQtdTycBU/6qoWbOm4QsWCKwOty8V4XLjQ5xdS/HSgKFsWrGYq2fPkJOdzd/hvzGyVQOyMjMA+H3LL5SvFkjVug0YM28R5/4+yp6Q1QapH+D6eRtqBIozBMF8Gb13t0KhoHHzxvzxxx/QQ89C5qOLtCOQBtRDN/BM9ZTXtwLWouuN9Dq6LqfbAUMft9WgPqKmefNHuzQJhvDCC/D2GFtkLUgG+OkybPKHKG1s+PjV/qgz0gmoXotJi7/H3tGJeW+P4GjYHgA6DRhOyKLPSU9JYcVHUzkatocZ360tcv3nTzjQ9yWREATzVSyzna5bt45RP40i5dcUwxfeGDjx33+vJO9o5fx4AQn//fc+QJ8FTVZD+23t2bdxnx47CwXxfHOZTiPvUa+5Zd+nyVZLvN3eh3NREmIBPsFMFc9spz179sQm0gb+efZrC+04uhvPj05d8SzxD+2nTzLIBefPnZk2epoeOwsFNfpNiV2rLX9NyrBfnGjXDpEMBLNWLAnBzs6OLz/9EpcxLqAtjhqNT7lMSeOKjWnbtq2pQ7FqAwdCapwtJyMsd5WZtBQFW75zYdbH4nKRYN6KbXK7wYMGU9+5PvafWO4X+4F/QDVXxQ9f/WDqSKyeUglfL5P49kM30pItcz3K7z5045XhUK2aqSMRhPwV2zdMkiQ2/7QZtzVuKNZZ5hcbgOvg3MuZn1b8RMWKhhvFKjxd69YwYpiCxe+5oylCD2ZT2Pa9M5kJdsz6RJwdCOavWI/Mnp6eHNx9ELdJbkjrLPALchVU7VUsmL6ArsFdTR1NifLJx1DJz5alUywnKYRtdCJ8kzO/bpOwtTV1NILwbMX+U71q1aoc2neIMjPKYD/LvvAjkU3lT1C1VLFo+iJef/V1U0dT4igU8ONqCU97ez4f7Yk6w7x/UGxe4czula78tl/Cx8fU0QhCwRRLt9MniY+PJ6hfEFE2UaT9kKYbaGaOcsFuth1O3zqx5ecttG7d2tQRlWhaLYyfKLN5WyZjF2QQEGheU4+npyhY8YEbOcl2bN8qupgKFqV4up0+iZeXF4f3HWbGSzNQNVZhs9BGt+6BOTkAzo2daf1vay78c0EkAzMgSTJNn1tPRnINZr8awy9LXcjJMo+zhcN7HJjUw5tmde35M1wkA8HymPTurkKhYNL4SZw6dIr2h9vjXNMZ6VtJNz2FKf0JLkEu+L/pT8isEPZu3ou3+Hab3MmTJ2nTpg0LFixg+/b1RJ2phTJJxYSXS3NgkxMaw0yMWmhnj9vxyQgvdqyII7Bqb6ZMTsTGwld4E0oms+juU7FiRXb9souwtWF02N0BVWUVdtPt4GIxBpEC0ncSrs1cKf9GeRb3W8zVU1cJDg4uxiCEJ7l37x5jx44lODiYQYMGceTIEZo2bYqPD/y0RmLzLwou/enKu1182Pq9MymJxv9Y5+ZI/LnDkY+GerH6Ew8mvWPLqZNV6dTpeRo1asSJEyeeXYggmBmT3UPIz+XLl1mxagXfrf4OjY+G9K7p5AblQn1AacCKbgJ7odS2UmT/mU2HTh14Z8Q7tGvXDkkyj8sQJZlWq+Wnn35i6tSp9O7dm08++QRXV9envv7UKVi6XCY0FKrVzaFRu0watMrCo7RhTh3UGRJnjtpxPMyJ4wfsee45ePtNiS5ddDe97/v1118ZOXIk8+bNY+jQoQapWxCKwSWzTAj3abVajh07xsZtG9m8ZzM3L9/EsZEjGQ0zyA7M1k2NXQ4oDeQ3KWYsuqU3L4DyrBLVKRWaQxocFA60fbEtA7oOoGPHjjg7W/4UCdYiPDycMWPG4O3tzaJFiwo1o2xmJuzdC6EbZPbvA3snmcCG2fhXyaZ89Vx8ymrwKK3BzuHJH31NLiQnKImNVnLzkg3Rl2y5fMqOW1eUNHke+vSU6N6dfHsPXbhwgR49etCiRQuWLl2KjbiGJJg/804Ij0pLS+Po0aOcPHmS4+eOc+rcKWLvxJIYnYjCToHSSYnCXgFa3UC47ORstFlaVO4qvMp4UaVyFZ6r+Rx1atahWbNm+Puba9emkuv27dtMmTKFv/76i9mzZ9OnT58il3nxIhw+DKdOw7+RMtevQ8wd0GjAUQX2/yWG3BzIzJDIzpLw8ZXxLytTq4ZE/XoSjRpBo0YU6t5AcnIyQ4YMISsri5CQEDw8PIr8XgTBiCwrIeQnPT2d7OxsNm/ezObNm1mzZg0A7u7uJo5MKIjs7GyWL1/OnDlzeOONN5gyZQoODg5GrTMzE9RqyMiAnBwoVUo3VUY+V6UKTavVMnPmTEJDQ/n111+pUqWK4QoXBMO6ZDXnsSqVCpVKhaenJyqVSiQCC7J9+3bGjRtHzZo1OXr0KOXLly+Weh0ddf+M+VFRKBR8/PHH1K5dm9atWxMSEkKrVkZYuk8QDMBqEoJgeS5cuMC7777LnTt3WL16NS1atDB1SEbTt29fypYtS9++fZk7dy6DBw82dUiC8Biz6HYqlCzp6enMnDmTNm3a0LFjR44dO2bVyeC+5s2b88cffzB79mxmzpyJlVytFayISAhCsZFlmTVr1hAYGMidO3eIjIxk7NixKJWG7Ets3ipXrkxERAQHDhzglVdeITvb3IbnCyWZSAhCsThx4gQtWrRg5cqV7Nixg2+++QYvLy9Th2USHh4e7NmzB7VaTVBQEGlpaaYOSRAAkRAEI0tISGDs2LH07NmTUaNG8dtvv1G3bl1Th2VyDg4OrF27lrp16/Liiy+SkJDw7J0EwchEQhCMIicnh0WLFlG7dm0cHR05c+YMQ4cOFSPAHyJJEgsWLKBXr160atWK27dvmzokoYQTvYwEg/vtt98YM2YMFStW5NChQ2JluWeYPHkyKpWKli1bsnfvXipXrmzqkIQSSiQEwWBu3rzJ9OnTOXr0KF9++SWdOnUydUgWY/To0ZQqVYq2bduyc+dOateubeqQhBJIXDISiiwjI4OZM2fy3HPPUatWLSIjI0Uy0MOQIUNYvHgxL730EkePHjV1OEIJJM4QhCLZvn07Y8eOpUWLFvz777/4iPUii6Rbt27Y2dnRvXt3tm7dSpMmTUwdklCCiIQg6OXkyZOMGTOGjIwM1q5dS9OmTU0dktXo3LkzP/74Iy+//DI7duygYcOGpg5JKCHEJSOhUJ62WI1gWO3atWP16tV069aNqKgoU4cjlBAiIQgFotVqWbNmzYObnWfOnOH1119HoRAfIWPp2LEjX331FR07duTcuXOmDkcoAcQlI+GZHl6sZt++fYVarEYomh49epCbm0vnzp357bffRBdewahEQhCeyhiL1QiF16dPH9LT03nppZf4/fff8fPzM3VIgpUqkef7jRs3RpIkJEli1apVBd7Py8vrwX779+83XoAmlp2dzaJFi2jYsCGVKlUiMjLysWQg2rB4DR8+nHfeeYf27dsTGxtr6nAEK1UiEwLA9OnTkWWZ4cOH59m+adMmatSogYODA/Xr1ycsLOzBc/Hx8aSmphZzpMVr+/bt1KhRg/3793P06FFmzpz51JXLntSG+bUflIw2NJZ33nmHoUOHEhQURHp6uqnDEaxQiU0ITxIREUH//v2ZNGkSt2/fpm/fvgQHB5eIG3oXLlwgKCiIDz/8kNWrV7N9+/ZCr1xWktuvuEyZMoXmzZvTt29fcnNzTR2OYGWsNiFkZ2czfvx4fHx8cHNzo0OHDvzxxx/57jNnzhyCgoIYMWIEHh4eTJs2jcDAQObPn19MURe/Jy1WU7t2bXr37o2TkxMBAQGsX78eX19fJEli4sSJTy2rJLafKXzxxRc4ODjw5ptvmjoUwcpYbUKYOHEiW7ZsYffu3cTExPD+++8zYMCAfPcJDw+nefPmeba1aNGC8PBwY4ZqEvktVjN69GgiIyM5duwYJ06cICwsjOTkZEJCQvI9uJek9jMlhULBjz/+yOnTp5k3b56pwxGsiFX2MsrOzmb58uUsX76cBg0aANC6det8pxdOTU0lNTUVb2/vPNt9fHyIjo42arzF7cSJE4wZMwY7Ozt27NiRZ32CuLg4QkJC+O6776hVqxYA8+bN49tvv823zJLUfubAycmJrVu30rRpU2rWrEnXrl1NHZJgBazyDCE1NZXc3NxCzRh5f33bR+frl2XZaubwL8hiNRcuXECr1eYZa+Du7o6np2e+ZZeE9jM3pUuXZvPmzbz++uucOnXK1OEIVsAqE4I+i5e7urri4uLyWJe+2NhYi+/3XZjFap7WdhqNJt86rLn9zFm9evVYvnw53bt3Jy4uztThCBbOKhOCq6srNjY2nD59ulD7tWzZkkOHDuXZFhERQatWrQwZXrH67bffaNCgAfv37+fQoUPMnTsXZ2fnp76+evXqKBSKPPPnxMXFkZSU9My6rLH9LEH37t0ZPnw4gwYNQqvVmjocwYJZZUKws7PjzTffZM6cOfz7779kZWWxa9cu/P398+2/PXnyZHbs2MHq1au5d+8e8+bNIyoqivHjxxdj9IZx8+ZNhg4dyltvvcX8+fPZvn17gaY98Pb2ZsCAAcydO5eoqCgSEhKYMWMGKpXqmftaU/tZmvfffx8nJyc+/vhjU4ciWDCrTAgA8+fPp1u3bnTs2BF3d3c+/vhjNm3alO+BrVWrVqxdu5Y5c+bg6+vL2rVr2b59u0XN3WOIxWqWLFlCnTp1aNSoEU2aNCEoKCjfs4r7rKH9LJUkSaxcuZKffvqJ3bt3mzocwVLJVmbLli1yv3798n1No0aNZEAG5JUrVxa4bE9Pzwf77du3r4iRGt62bdvkihUrykOGDJHv3r1r0LJ9fHzkkJCQB39baxtauiNHjsh+fn7yjRs3TB2KYHkuWmW302c5fvy4XvvFx8cbOBLDMMViNdbWhtbiueeeY9KkSQwbNoz9+/eL6cmFQhGfFgtWHIvV3L17F0mSiImJYcCAAfmOVBbMw5gxY3B0dGTBggWmDkWwMCXyDMHSabVafvrpJ6ZOnUrv3r05c+YMrq6uRqnL19dXr268guncv5/QsGFD2rRpI9ZlFgpMJAQLIxarEQqidOnSLF68mBEjRnD8+PGnzlgrCA8Tl4wsxO3btxk6dCivvfYa06dPF8lAeKYePXrQsGFDZs2aZepQBAshEoKZK8hiNYLwNF988QUrV67kn3/+MXUoggUQCcGM3e/DHxER8czFagThSTw9Pfn8888ZNWrUM6cfEQSREMzQw4vVrFq1itDQ0EIvViMI9w0cOBBvb2+WLFli6lAEMycSghl50mI1LVq0MHVYghVYsmQJc+fOFRPgCfmyioRw48YNrly5wpUrV4iJiSEtLe3B31euXEGtVps6xHzJ+SxWIwiGULFiRV555RVmzJhh6lAEMybJVtDJvGvXroSFheHg4IAsy2i1WpRKJVqtlszMTGJiYnBzczN1mE/08GI1ixYtemx9AkEwlLS0NGrUqMGWLVto1KiRqcMRzM8lqzhDGDZsGLa2tty7d4+kpCRSUlK4d+8eycnJtGrVyiyTQUEWqxEEQ3J2dmb27NlMmjTJ1KEIZsoqEkJwcPATe1C4uroyatQoE0T0dIVZrEYQDG3IkCEkJCQQFhZm6lAEM2QVCcHBwYFOnTo9dlDVaDQEBQUVayyZmZlPfa6wi9UIgqFJksSHH37IBx98YOpQBDNkFQkB4LXXXsszn48kSXTq1AlHR8diiyE0NJTg4ODHtuu7WI0gGEP37t3Jyclhz549pg5FMDNWkxDat2+f529XV1dGjhxZbPUfOXKEV199lSNHjrB9+3bAMIvVCIKhSZLEBx98wIcffmjqUAQzYzUJwcbGhl69ej3oqinLMu3atSuWuqOjowkKCiItLY309HRef/11Nm7cSO3atbly5Qr//vsvkydPxs7OrljiEYRnCQoKIisri/DwcFOHIpgRq0kIAK+88grOzs4oFAr69OmDjY3xJ3NNTU2ldevWJCcnP9iWkpLCrFmz+OWXX1izZg0+Pj5Gj0MQCkOSJMaOHcuXX35p6lAEM2JVCaF58+bY2tpib2/PiBEjjF6fRqOhW7duREdHk5ub+2B7RkYGFy9exNvb2+gxCIK+BgwYwJEjR7h8+bKpQxHMhEUOTMvMhNRU3b+kpLzbv/xyAvv3/8imTTGUKvX/XkdOTuDiovtXqpRh4hg5ciQhISGkp6c/9pytrS1dunRhy5YthqnMDCUmJnLnzh3UajVqtZrMzEycnJywt7fH0dGRMmXK4O7ubuowTSouLo6YmBiysrLIzMxErVajUqmws7NDpVLh5+dntMWNCmLmzJmkpKSwcOFCk8UgmI1LZpMQZBnu3IErV+DqVbh6De7elbl9V/e/cXESCfGQnibhpJJROcs4OcvY2oGNrYyDo+5tZKSfIjFuPWUDdHPA5+RIqDMAJNJSJNJTJTLSJOwdZJxdwNdXpnRpCR8fKFdWoqw/VKyo+xcQAE+77P/FF1/wwQcfkJaW9thzTk5O2NjYkJGRwT///EPt2rWN0mbFJTo6moiICA6fOMyJsye4cPYCibcTsStlh01pGyRnCYWjAg0alCjRZGggDXJic8hJycHT35PqNavTuEZjmjVuRvPmzSlTpoyp35ZBXbt2jYiICP765y9ORJ3g4rmLJMckY+f2Xxu5SCjsH2qjdA1SmkR2bDY5qTmUrlCawJqBNA5sTPPnmtO8eXO8vLyMHvfdu3epW7cuN27cEDPpCsWfEGQZLl+GyEg4cwb+iZSJioIb18DNQ8a3nAZvfw0efjm4eWlx89JSylODu7cWFzctDk7PDjcpIQ43z/wv1+TmSKQlSyQnKEmMVZCcoPt3L8aG+Ggb7t5UcveWAncPCAyUqV9PQe1aUKcO3Lq1k969X0aj0eDk5IStrS2ZmZkEBATQuHFj2rRpQ8OGDalTp45F3kjOycnhwIED/LL9F7bt3EZ6djrKFkpSm6Qi15KhOlCegl1w1AA3gLMgnZFwOepC7qFcXFWudA/qTu/g3rRp08bi5m1Sq9Xs27eP0F9D2bFzBzm2OUgtJFIbp0INIBAoCxRkvGEOcB2IAkWUApe/XMg+nI2Xtxe9gnrRq2svmjdvjkJhnCu8L7/8MgMHDqR///5GKV+wGMZPCGlpcPAgHP4LDh3WcuKEhJuHlvLVcvGvkk3ZKrmUr5qLT7lclGa4oGdirJJbl2y4cdGGO1dtuXjyPFfOvYS9gzcVKzajZYsX6NmzIe3a1SyWm9jGdP78eZZ8u4Q1P69BqimR+nIq2mAtVDZCZRdAsU2ByzYXpCsSwwcPZ/TI0VSubIzKDOfkyZN89e1XhIaGomykJOXlFORgGcoZobJToPxVifMWZ2xjbHl9+Ou8+dqblC1b1qDVbNq0iW+//ZZdu3YZtFzB4hg+IWi18NdfsGePzJ79MlFnJGo2yKFSvSyq1s2hSp0cVK5aQ1ZZrFLuJeKkcuP6RXsunrTl6il7Th2xw8lRon07eKmjRMeOunsVluLo0aNMmzONv078RdbILHKH5xrnAPc0V8B2lS1239vRpmUbZk+dTb169YoxgGf7448/mPrpVE5dOkXmm5loBmvAtxgDOAv2K+1RrlES1DmIWVNnUa1aNYMUnZ2dTfny5Tl27BjlyhXn//GCmTFMQtBo4PffIXSDzNYt4FlGQ90X1NRulkW1etlm+cvf0G5fs+HUYTuijjhw6ogdzZrL9OutoFs3MNf7qrdu3WL05NGE/RVG+rR05CEymPIKlxoUqxQ4znHk5Q4vs3DWQnx9i/Oo+7hLly7xxsQ3OHLhCGkz0qAvYMqrW2mgXKHEYYEDg/sMZs6Hcwxy437cuHH4+voyZcoUAwQpWKiiJYRLl+D7H2DVapnSZXNp0iGT59qr8SpTspfqy1JL/HPQnhP7HfnnoD3tO8CokRJt24KRLgMX2nc/fMf46eNRv6MmZ3wOmNP9xAyw+8wOhxUOfL3wawb0H1DsIWi1WhZ+tZCZ82ainqpG86YGbIs9jKdLBodPHHAKdeLHr3+kS5cuRSru77//ZtiwYZw6dcpAAQoWSL+E8Mcf8MlsmVOnZFp3z6RNzwx8y+c+e8cSSJ0hcWiXI39sUpGaqGTyJIkRw8FUHToyMjLoO6Ivf9z4g7TVaWCYqw7GcQachzgTVD+I1ctXY29vXyzVJiUlEdw/mJOak6T9kFa8l88K6yg4D3VmSJchLP58cZFuzlepUoVff/2VwMBAAwYoWJDCJYQDB2DKNJmEJC3Br6byQpdMLKxziEldjbJl23cuXPjHjvcmwujR0lO7tRpDXFwcrbq04nrj62QuzgRLuJSXBU4jnah2tRoHth8w+toW169fp2XnlsR2jyVrVpZlDN1MBdUgFU20Tdj5y069J3ScNGkSbm5uTJs2zcABChaiYAnh2jUYN17m30gtAyak0LitGjF9v/5uX7Nh/Zeu3L5sx5JFEp07G7/OxMREnn/xeW70u0H21GzjV2hIMthPs6fq71U5tPcQLka6Yx8dHc1zbZ8jZmIMmtct7LKnBhzedKDRjUaEbQ3T62zqyJEjvP322xw/ftwIAQoW4NkJYfUaeG+STPCINDoPTisRN4iLy5mjdqya7UaLpgqWLZVQqYxTj0ajoWn7pkS2iiT7IwtLBg9xGO9A04tN+W3bbwZfUEitVlOnWR2uvnoVzWgLSwb3acFxuCPBimBCV4UWendZlqlQoQLh4eEEBAQYPj7B3D19Cc2cHBg6TGb2Z7l8uCae4OEiGRhareey+TQ0joTcTBo0krl40Tj1TJ05lbOlzpI904DJoDG6QVcSsKoQ+3k9tN/+wlWp/lzN8azjzP5sduF2LIDXx71OdONowyaD4m4jBWR+m8muM7v49odvC7GjjiRJBAcHF3o8QuPGjZEkCUmSWLVqVYH38/LyerDf/v2F/DAIRvHEhKBWQ7ceMjfvZfFJSDxlKogbxsZiay/zyoxkgl5LpnVb3ahtQzp37hzLflhG+g/pBRs1WxjTARkY/sj2Reh65Fx6wj7xQKqe9SkhbU0ac7+cy/Xr1/Us5HGHDx9m877NZH719NXu9PZoG0UAwYALugN/EPBox56itJE9pK1NY+L7E0lISCj07i+++KJey2tOnz4dWZYZPnx4nu2LFi3C1taWS5ce/zDEx8eTmqrvGxWM4YkJYeBgmRwHNW/PvYetnVlMdWT1WnbNZOjUJNp3lLl713Dljpk+hswPMsHDcGU+lRoYCoQCxvoN4QtZ47OY+OFEgxX55uQ3Sfs8DYpjcb12QB3gJnDyv20dgEQD1lEVsgZnMXPuzELv+uKLL/L7778/cY3ywlCr1QwdOpTQ0NA8MwEL5u2xhLBiBZy/ouH1j5JQFLEH0folC+gV6Ef/ugFEHjrIm+2eZ9hzNdjy3TLSkpP45LWBDGxQhY9e6UfKvf9/I3Jzclg1dyYjmtehf72KfDC0N9fPn33wfPSVS8x7ewRDnwvk9TaNWPP5LDS5OQ+eP/77Pt7t+iL961VkYo8O/LVvJwCLp4yjV6AfU/rplrlUZ6TTK9CPXoF+HN2/+7GYTx3+k3c6t6R3DX/mvT2iQLEVxXPt1XQcmMbAwTJaAwzmvnXrFhEREWiH6VlYNjAe8AHc0B24/sjn9aeBIcA8/aorqNw3c9m5cyexsbFFLisyMpLLty9Ddz0LKGwb+QCf/vdaf2AhEAMc1LP+p8h6N4tVa1aRkZFRqP08PDwICAjg33//BXRdcHv37o2TkxMBAQGsX78eX19fJEli4sSnJ+XTp08zZMgQ5s0z8odBMKg8CSEzE96fIfP2vESD3C/oN3oCU79ejVajJfJwOAu27OONTz7nx/mz+PbjqYyYMpMleyKIvx3N9pXfPNjvx/mzOHP0MHPWbeeHP09SqVYdZo8aTE5WFgDfz55B+z6D+P7PSD5avYHTf/3JtpUrdO8hLZUF40YxfOpMfjp+gfELv+bHz2eRci+Rd+Z+yYCxkx7U4+CkYuO529g7Oj0Ws0aj4dDu7cxeu5VJi78vcGxF1XVEGnHJGnbsKHpZmzZvQttHq/+gs4nAFmA3uoPW+0B+Y8QaozsgGpszKIIU7DBAI63bsA71ULX+3UsL20bXyXvp7v5U7IYel1IGlE2U/Pbbb4Xe9cUXX+TAgQMAjB49msjISI4dO8aJEycICwsjOTmZkJAQ5s+f/9QyGjduTIcOxfFhEAwpz9cgZB3UaJKNb3nD9rLQaHLpMvhVnFxcafZSMI7OLvhXrELZKtXwKO1DozbtuXbuDABpKcns+nkV/ce8h2/5AJxcXBkyYRop9xI5vOdXAD74PoRGbdpja2dHmQoVadm1J/8c1H2A78XFkq1WI2u12Nja4lexMkv3HsLVvXDXTLQaDb3eGIuruwfPte/E5KUrCxRbUUkK6DIslS++Kvqluh3hO1C3Ueu3cyKwHJgGNADsgdbA7SKHZRBpbdLYGb6zyOXsDN9Jbhs9L2kYoo3CgCroLiUZWGqbVPaHF/5m7XPPPcfx48eJi4sjJCSEqVOnUqtWLTw9PZk3bx5qtZ6fKcHs5TkP+CNcpkFrw99YUypt8PD5/5w0jioVpcv+f/ino7MLGWm6m0vRVy6hyc3h0zeGPlbOrcu6bjgnD4Wz9ou53Lx4niy1Lt7yVXWjK8sEVKJRm/Z88tpA/CpWpn3vAbTrMwhn18KtiqO0scWrjF+ebQWJzRAatcli+XTdVOFF6V154dIFqKnnzufR3Qcw16UcasLZ74p+qe76peuma6Mk4GNgDUYZJKitqSXyUGSh92vYsCHTpk3jwoULaLVaatb8fwO5u7vj6elpyDAFM5LnY3j1qkzgS4bvg61QPn4+rnjaDYr/hkXMXf8rVes1fOzp5IR45r01gi5DXmHmyvU4Oruw6+eV7AlZA+i6zk1dvpp/wn9j188r+fmLeWz74RvmbdiJVxn/PHXcp9U8/gtRoXjCkfgZsRmKja2MSymZmBiJosztlnovVf+byebel8ALkhKSilxMRlIG6Ds3XFHaKBXoAcwGmhWhnPx4QXxCfKF3q1ixIomJiU/tAVTUG86C+cpzpHZzh7Rk0w5B9q9cFaWNLdeecqP21uULZKkzad9nEI7OuhGrudl5+9dLkkTD1u2YvuInlu07TG5uDsd+2wuAo8qZ9NSUB6+9FxdDTnbB+uc/KzZDSk2RKOosDfaO9lC4e4r/VwPdz4XTRYvBaNLAUVX0bkG2Drag70mxvm0Uja7r6TSgt551F0QaqPQY7ShJEvXq1SMrKwuFQkHUQ32h4+LiSHp43VrBquRJCLVrKrhyxrQrfDm7lqLzoOFs/HoRF0/+TU52NpdPn2T0Sy9w/t8T+FWsjI2tLbt+Xklmehp3b1zjwJb/j8q8cPIE0wd2I/7ObTS5OSQnxJGbk0PZSlUBqFC9BneuXeHs8SOkp6SwfeUKbGwLNo3ls2IzlNtXbfD0LPoEeN6+3rqDjz7cgTeBOcC/QBawC13PmMeXkC5+0Rhkamx3X/fibaNIdFNoL+P/N+D3A8aYdToayvrot5hOtWrVSEhIYMCAAcydO5eoqCgSEhKYMWOGXklGsAx5LhmNGA4tWjvRc1SqQXoZ7fp5Jd99Mh2AXoF+rDl6juHNaqHVaFg06R3uxcdy9/o19q7/EYCRrRvy7R9/M2Ti+ygUSua8NZyMtFT8AioxYOxkqtdvBMDYzxbz8xdzCdsQQpW69anTtAW/rv6WgQ2q8NPx87Tu1ps5bw7l9rUruHv7MHDcZOo0awFA7edfoNPA4cx5axgqVzfe/PhzdoesZt7oV+g7egKu7h55Yn5txmw6Dxrx4D09KzZD2LtOxYjhRS/nxedf5NShU2hb6NntdD66T0hHIA2oB2wCnnY8yCXvFNFVAU90A60MzOaQDe2eL/qd2Beef4H1h9brlgXVR2HaSA20QHe56NH7DpP1rD8fToecaN+0vV77li9fnuvXr7NkyRJee+01GjVqRJkyZVi0aBFbtmx55v65ubnYPvRDq2rVqnh6ehIfb4QPg2Awj81l1K2HjGvFdHqMEiMITeH6BRvmjPTidKRE6dJFK+u3336j54yeJEckGya4hzUG7p8UreTx0cpP4wXcH0C7D9DveIVrXVf2fbeP5557Tr8C/rN+/XpGrh1J6lYjfN5N2Ua5oKqk4uSBk3otS7p27Vr27dvHypUrH3vO19eXL7/88sEazI0bN+bECd0bXbly5WOjlZ/Gy8vrwWjqffv20b69nh8GwVAuPXYe8N0KiXoNVFRrmEWtJpY7EZolSk9R8NUED5YtKXoyAGjTpg2OsY4k/5Os6xZpSPpOiGmIH4jh4KnwLHIyAOjevTuvj3tdNz6gQtFDy8OUbbQValWvpfca1RUqVCjw9CD6zo4qzhbMz2Pdf7y9YUOoxJL3PDh9xLT3E0qS1CQFs171ZFA/Jb0NdKNRoVDw0eSPcJlsQQs8P4sMLlNc+HTqpwYpzt7engljJqCaZkXXxXPA+X1n5kydo3cRnp6e3Lt3L8+2u3fvIkkSMTExDBgwIN+RyoJleur010ePQtduMr3eTqF9H327qggFcf28LYsmuDNiiIIPPzBsLy+tVkvN52pycexFtEMMMB+GiSmXK6m3rh7Hfz9usCmws7KyqFi7IncW34FOBinSpOw+tqPNyTbs2bhH7zJu3LhBhw4dOH/+vOECE8xd/ushXL0KvfvKOPtkM+L9JFzdLf+AYk5kLexeq2Lrty4sWyrRu5dx6jl//jxN2jYhdW+q+Q40K4ijUKpHKU4eOkmFCoa9vnPs2DHadm9LekQ6BBi06OK1F7xGeRF1NApvb2+9i0lISKBevXrcunXLgMEJZu7p6yEAVKwIfx2SaFHfnve6lWbnjyrEmBTDOHvcjql9vLl6xIVjR4yXDACqV6/Oj1//iCpIBUZac8HoToFzT2c2rtlo8GQA0KRJExbNXoSqo8pspucotAhwGe7CztCdRUoGAE5OToWeGE+wfM+c0svWFmbP0iWGmFMujA/yIewXJ3JzxBqa+jj3tx2fveXJ9x96MP9TG/bvlTDC8e0x3V7uxjdzv0HVXvX/ni+W4k9w7uzMz8t/pl07I0z6859Xh7/K7LGzUbVRwTmjVWMU0i4Jlz4u/LruV5o0aVLk8jQaDUqxYHqJU6A1lR927BjM+lTmyFGZDv3TadMjA3dvcSkpPznZEkf3O7B/nQp1ig3Tp0oMGKBLtsVt9+7d9H2lL2mfpSEPNvf5KUDxjQKXj13YunYrrVu3LpY6161fx2vvvkbG1xnIL5t5G2nB5nMbSi0rxd7Ne2nY0DBTqsTExPD8889z7do1g5QnWIRnr6n8NOfOwdJlMiHroHq9HFp0S6dByyzsHMz8C1RMZBmunLHlz18didjhROMm8PYbEkFBoNB3qmUDOXfuHD0G9+BWpVukLU7TzdFvbm6B05tOVEqoxNaftlKpUqVirf7vv/+mx+AexDePJ+PzIsx3ZEyXQPWairr2ddm4aiNlypQxWNFXrlyha9eunDlzxmBlCmYv/3sI+QkMhMVfSUTflHjnVTtO7nLjjbY+fDnOg4O/OpJyz8RHPRPIzZE4c9SO1XNKMbq9D6s/9qBJFSci/5XYvUOia1fTJwOAwMBAIg9HMrb2WFT1VNjOtdV/ziNDSwXbmbaoGqmY2mIq/x78t9iTAehm/Dx34hyvuL+CqpYK5RKlbjEcc5AI9u/Z49LChTl95xCxO8KgyQAgLS1NTFFRAul9hvAkqamwYwds2CRz4AB4l9FS83k1tZ7Ponr9bJxcrOvsQZML187bEnXUjrNHHIj6x5badaDHyxK9eoEJjmOFduPGDcZNH8eesD3kvJVDzhs5upGyxe0u2C2zw2aFDd2Cu7HgkwUGP8jp68KFC7wz9R0ijkWgHqdG86rm/wvbFKcbYP+VPco1SgYNGMScD+YYbSrqHTt28N1337F582ajlC+YJf0vGT2LVgv//AP798O+MJnjx8HdS0vVOjkE1M6iQvVcylfNReVqGfcfcnMkoq8quXnRliun7Tj91z/cvRlAlWp+tG0NHdpLtG4Nlvqj6sqVK8xeOJv1oetRtFKQOjhVNz+P0zN31V8asBtc1rgg/yUzeNBgpo2fRrly5Z65qymcPXuWj+d/zLat21B0UpA2KA1eRLcwjrEkATug1JpSyJEyI0eM5L2x7+HjY9zrfEuXLuXSpUt88cUXRq1HMCvGSwiPkmW4cEE34O3wEZnISJkzZyTs7WXKV9NQpkIOnv65lPbXULqshtL+ucV+RpGTLZFwV0nMLSWxt5TER9sQd8uGm5dsuHtLQaXKMnXqSDzfROLmzaWsWfMxb7wxivfeew8XF+sYDZyRkcHGjRv5Zt03nDh8AvsX7Eltk4q2uRYaUrSDnxo4DopDCpz3OpN1NIvmLzbn9f6v0717dxyKOr1rMUlJSWHd+nV8F/odp/4+hV0bO1JbpyI3l3WT2xWls0A6cAyUEUpcDriQ/U82rdq1YtTAUQQFBeWZMM6YJk6cSLly5Rg7dmyx1CeYheJLCE9z9y6cPg0XL8LlK3Dpisy1azK3bkqkpUp4emvxKK2llIcWFw8NDs4y9o4aHFUyDio5zxmGykXOs8JYZrr0YNxEtloiM11BZrqEOk1B5n//7sUqSEpQkBinICcb/MtBxQCZypUkKleSqFQJateGypXh0V548fHxfPLJJ6xfv553332XcePGYW9vzJ+LxSs9PZ2wsDDCDoax/9B+Lp+6jF0ZO5S1lGSVzyKzTCaUARzRze5ph+46ezq6exJ3wOmuE3bX7NCc0ZAdm021etVo37w9NSrX4P3332f37t00aGDoiZaKT3JyMvv372ffwX0cOHyAa1HXcCjvgFRTIqtcFmo/te6mvQPggm5mVDW6NRjSQYqWcIxxxO6KHZqzGnIScqjRsAadWnSibcu2tG7dGju74p9Cpnv37rz66qt07dq12OsWTMb0CSE/OTkQF6dLGnfvQkKC7j5FaiokJEJKikxOLqSkQK5G5u6dnagzY/EpMwLH/3o7SZKEq6vuYO7uBqVcJVxcwMUFPD2hdGnw8QFfX/0v95w/f54ZM2Zw8uRJZs2aRe/evQ02rYI50Wq1XLt2jXPnznHt2jVux9zmRuwN7iXfQ52rJjsrGzt7OxxsHHB3c6dC6Qr4+fgREBBAYGAgAQEBedpl27ZtTJw4kaNHj+JW1NWAzERubi5Xr17l7Nmz3Lhxg9uxt7kec52bN24SHx+Pt583dvZ2ONk54V5K10b+ZfwftFH58uVN/RYA8Pf359ixY/j5+T37xYK1MO+EUFgLFy4kPj6eTz81zMRnhfXXX3/x3nvvkZOTw2effUarVq1MEoclmTRpEufOnWPr1q1WmUTvCwkJYe/evU+cTtrc3Lp1i+bNm3Pjxg1ThyIUL/27nZqj1NRUk17Lb9q0KQcPHmT69Om8+uqrdOjQgdOnzXUNSvMwZ84c1Go1n332malDMarExEQ8PPRd4Lp4HTlyhOeff97UYQgmYFUJIS0tDWdnZ1OHQdeuXYmKiqJPnz506tSJUaNGcffuXVOHZZaUSiU//vgjy5YtY+/evaYOx2gSExNxdzfH0W2P+/PPP2nWrJmpwxBMwKoSgqnPEB5ma2vL66+/zrlz5yhTpgx16tRhypQppKaKlege5ePjw/r163n11VetdnbNe/fuWcwZws6dO+ncubOpwxBMQCQEI3N2dmbmzJn8+++/3Lt3j1q1arFixQpyc3NNHZpZadq0KRMmTKB3795kZ5vLkGDDSUhIsIiEcPXqVdRqNTVq1DB1KIIJiIRQTPz9/fnmm2/Ys2cP+/fvp06dOvzyyy+mDsusjBs3jmrVqlnlSlyWcg9hx44dBAUFmToMwUSsKiGkpaWZbUK4r0aNGoSGhrJkyRLmzp1L8+bNiYiIMHVYZmPZsmX89ttvrFmzxtShGJSlJIRffvmF7t27mzoMwUSsKiGY8xnCo9q1a8fx48d59913GTZsGH379uXy5cumDsvknJ2d2bRpE1OmTLGqmTYTExONNu+QoVy/fp1Lly4Zdc0JwbxZXUIwh15GBSVJEn369CEqKor27dvTqlUrRo0aRWxsrKlDM6lq1aqxfPlyevbsSXJysqnDMQhLOEP46aef6N+/v1gYpwSzuoRgKWcID7Ozs+P111/n9OnTuLu7U6tWLWbOnElmZqapQzOZbt26ERQUxLBhw7CGsZOpqam4urqaOox8/fzzzwwePNjUYQgmJBKCGXF3d2fu3Ln8/fff3Llzh8DAQFasWIGmhC5k/dlnn3Hv3j0WLFhg6lCKJCUlBWdnZ7MeiX3gwAEcHBwsel4poeisJiHIskxOTo5JJgIztHLlyvHNN9+wadMm1q9fT926dfn1119NHVaxs7GxITQ0lMWLF/PHH3+YOhy9WcLloqVLlzJmzBhThyGYmNUkhIyMDKtb4alRo0aEhYWxaNEi3n//fTp06MA///xj6rCKlY+PD+vWrWPw4MFER0ebOhy9mHtCuH37NocOHaJ///6mDkUwMatJCJZ+uSg/7du358SJE/Tv359u3boxdOjQErX4ebNmzRg3bhz9+/cnJyfH1OEUmrknhKVLlzJkyBCLWY9CMB6rSgiW1MOosJRKJa+++irnzp2jZs2aNG3alLFjx5aYHknjx4+nTJkyjB8/3tShFJo5J4TU1FS+++473n77bVOHIpgBq0oI1nqG8DAnJyemTJnC2bNncXR0pHbt2kyZMsVqumc+jSRJrFy5kj/++IPvv//e1OEUijknhGXLltGtWzezWYdBMC2rSQjmMtNpcbnfI+mff/7h3r17VK9enXnz5qFWq00dmtGoVCq2bdvGhx9+yNGjR00dToGZ60ynarWaJUuW8N5775k6FMFMWE1CyMzMxMmpYCvCN27cGEmSkCSJVatWFbgOLy+vB/vt379fz0gN6/4cSX/99RdXrlwxq66qxmjngIAAVq1aRa9evbh9+7ZZx3pfQc4QTPGZ/P7772nRogVVq1Yt1H6C9bKahJCVlVWo9YynT5+OLMsMHz78wbZNmzZRo0YNHBwcqF+/PmFhYXn2iY+PN9vpqwMCAvjmm2/Yvn17nsnzTD2oyxjt3L59e0aPHk2fPn0MOjPqk2IFWLRoEba2tly6dOmxfQrymSjoJaNH64+IiCA4OBgXFxe8vLwICgri1KlTha7/STIzM5k3bx7vv/9+ofcVrFeJTQiPioiIoH///kyaNInbt2/Tt29fgoODOXfunAGjNL46deoQGhrKt99+y1dffUWzZs04cOCAqcN6wFDtPGnSJMqVK8eECROMFKnuksrQoUMJDQ0t0nTl+s5j1K5dO+rUqcPNmzc5efIkAB06dCAxMVHvWO5btmwZrVq1olatWkUuS7AeVpcQkpKS6N27N05OTgQEBLB+/Xp8fX2RJCnfaZXnzJlDUFAQI0aMwMPDg2nTphEYGMj8+fOL8V0YzgsvvMDBgweZNWsWY8eONdoYhuzsbMaPH4+Pjw9ubm506NAh30Fkhmrn+zeZDx06VKCbzIWNE+D06dMMGTKEefPmFSq2RyUmJuLi4lLo+n18fPj0009xc3PD39+fhQsXEhMTw8GDB4sUT1paGgsXLmTGjBlFKkewPlaXEEaPHk1kZCTHjh3jxIkThIWFkZycTEhISL4HnfDwcJo3b55nW4sWLQgPDzd26EbVvn17/v33X15//XV69+5N3759n3jpQ18TJ05ky5Yt7N69m5iYGN5//30GDBjw1Ncbsp0dHR3ZuHFjgW4yFzZO0F3X79ChQ6HjelRiYiIrVqwodP3Xr1/PM91FqVKlAIo8XmDRokV07tyZ6tWrF6kcwfpYTUJQq9VotVpCQkKYOnUqtWrVwtPTs0A9b1JTU0lNTcXb2zvPdh8fH4sdHfswhUJBnz59OH36NE2aNKFly5a8/fbbRb4pm5iYyPLly5k2bRoNGjTA3t6e1q1bP7VcY7RzQW4yFzZOQ4uPj2ft2rVFrj8sLIwqVaoUaXrq2NhYFi9ezAcffKB3GYL1spqEkJWVRXp6Olqtlpo1az7Y7u7u/szrt/dvvD46+Zgsy2Y9IVlhOTo68t5773Hu3Dk8PT1p0KABEydOJC4uTq/y/tfeeYdFcXVh/N0GbKMjTcWGUm0gNuwajT22qFGTGEssERMTa4xGo6IxsUQTjb18FiyxVzBYY1TsgAiKikgVkM7C7vn+QIgodXd2Zxfn9zz3UWZ37j3z7tw5c9u5ERERKCgogIeHR6W+ry2dKxpkrqqdTJOWlqZx+WlpaViwYAG2b98OoVCodj7z5s3DF198wa074CiVauUQRCJRqZ9VNAXT1NQUcrn8nVW/iYmJcHBwYMxGfcHMzAwLFixAWFgYhEIh3N3dMXPmTKSmplYpn6rOYNKmzuUNMrM50yorK0ujyQ5AYcvqo48+wqJFi9C6dWu18wkPD8eRI0cwY8YMjezhqL5UK4fg4OAAPp+PsLCw4uNJSUlIS0ur8Px27drhypUrJY5dvnwZ7du3Z9pUvcHKygr+/v7FO5M1atQIM2fORHp6eqXOd3V1hVAoxP379ytdprZ0Lm+QWR07mSIlJQXW1tZqlx8bG4vevXtj9uzZGDRokEa2TJs2DT/88IPe78vAwR7VyiFYWlpi2LBh8Pf3R1hYGF6+fIm5c+dWKgrqjBkzcPz4cWzbtg2pqalYunQpwsLCDDJ2TlWxsbGBv78/QkJCSqx6rmiDHgsLC0yYMAFLlizB7du3kZeXh5MnT8LR0RFZWVmlnqNNncsaZFbHTqYocgjqlH/37l0MGTIEv//+e/HgdmBgIGbOnFllO86dO4cnT57giy++UPtaOKo/6ndG6hlFs4zWrFmDMWPGwMvLC/b29li1ahUOHTpU4fnt27fHrl278P3332PcuHFwcXHB0aNHS4xHVHeK9mGYNWsWlixZgvr168PPzw9Tp04ts9tj+fLlEAqF+OCDD5CZmYkmTZrg4MGDZTphbev85iDzv//+W9wVVVU7AaCgoKBEN6SzszOsrKyQnJxcaXuKFqVVtfzc3Fz4+voiIyPjnbGHqnb5KJVKTJ06Fb/++qtG4w8c7wFUTZgwYQJt2rSp1M9sbW1p9+7dxX97eXkRAAJAW7ZsqXQZVlZWxeedPXtWU5P1ntDQUBo8eDA5OTnR+vXrKT8/v0rns6mzv78/tWnThvLy8li1df/+/TR8+HDWyici+vPPP6lz586VzpPjvSWy2rwuVGWl8o0bN9QqoypvhtUBNzc3BAQE4N69e1i4cCFWrFiBWbNm4ZNPPqnURuxs6jx9+nTcunUL06ZNw2+//Vbh97Vl68uXLysVtkJb5WdmZmLBggU4ceKEWvlzvF9UqzGEtxfsxMfHg8fjISEhAcOGDSt3pTJH2bwZDmPTpk3w8vLC0aNHWY+TVB5VXcmsLdgOfe3v74+ePXvC09OTNRs4DIdq3UKws7PT64eWoeHr64vz58/j7NmzmDt3Ln788UfMnTsXffv21cv1GmKxGAEBAWjfvj3c3Nw0mrKpLqmpqbC3t9d5uQAQFRWFTZs2vXfbrnKoT7VqIWg635ujcnTr1g1Xr17FypUrsWrVKjRp0gTbt2/Xi5Dbb1O/fn3s2bMHgwYNwuPHj3VevrqB7Zhg4sSJ+OGHH2BnZ8dK+RyGB+cQONTG19cX586dw++//47t27frrWNo164dFi5ciL59+1Z6jQVTsNVltG3bNqSnp2P8+PE6L5vDcKk2DiE3N5dzCCzh6+uLwMBArFu3Dvv27UPjxo31zjGMHj0aXbt2xdChQ3VqFxsOITExEbNmzcLGjRvB51ebKs6hA6rN3VLaoDKHbvH19cXRo0fx559/Yt++fWjYsCH+/PNPjfYSYJJffvkFAoEAc+bM0VmZunYIRITRo0djwoQJrMVu4jBcqpVD4FoI+kHbtm1x9OhR7Ny5E0ePHtUbxyAQCLBr1y4cP34cGzZs0EmZunYIv/32G9LT0zF79mydlclRfeAcAofWaN26NY4ePYqDBw8iMDAQzs7OWLVqFfLy8lizSS6X4+jRo/jxxx8RHBys9fJSU1NhYWGh9XKAwg19/P39sWPHjkqtE+HgeBseGei8zH/++Qd//vknJBIJRCIRzpw5g65du8LBwQE8Hg8eHh7o1asX22ZyvMGdO3ewaNEiXL9+HVOnTsX48eNZ6+a7dOkSPv74Y1y4cAH169dnLN8NGzZg7dq1sLCwgLW1NYKDg/HNN9/A0tISFhYWaNGiBerWrctYeUW8evUKrVq1wsKFCzUOgsfx3hJlsKErYmJiSCAQFC/bfzOJRCLauXMn2yZylMHdu3dp5MiRVKdOHVq5ciXl5OSwYseWLVvI1dWV0tLSGMvz77//JolEUuJ+5PP5JBaLic/n07///stYWUUolUrq3bs3zZgxg/G8Od4rIg22hQAA7u7uJUJdFyGVSpGYmAiJRMKCVRyV5f79+1i2bBkCAwPh5+eHKVOmQCwW69SGadOmITQ0FMePHy/uZlEoFAgNDUWzZs2qnJ9CoYC5uXmpkWLd3d21EoJ79uzZuHHjBk6ePMl1FXFoQpRBjyGMHj36nQcIj8dDnz59OGdgAHh4eGD79u04c+YMbt26hYYNG+LXX39FZmamzmz4+eefYWRkhOnTpwMo7PP39fXFyJEj1crPyMgIXl5e7xyXy+Vamd20Z88eHDhwAAEBAZwz4NActtsomhATE/NO89zU1JTOnz/PtmkcahAWFkaffvop2dnZ0bx58yg5OVkn5aanp5Onpyf99NNPVLt2bTI2NiaZTEb37t1TK78VK1aQWCwucV9aWFiQQqFQ20alUkl+fn4lutfOnz9PDg4O9ODBA7Xz5eB4g0iDdghERC4uLiUqno2NDalUKrbN4tCAp0+f0pQpU6hGjRo0ZcoUiomJ0XqZBw4cILFYXDwuJRQKafz48WrlFRoaSqampsX3pFgspnnz5mlk3759+0goFFLbtm0pJyeHQkNDycHBgS5duqRRvhwcb2D4DmHZsmXFb2PGxsY0a9Ystk3iYIjExESaN28e2dra0siRI7X2JhwQEEByufydyQlyuVztAW9LS8vifCQSCcXHx2tko7Ozc7FzadWqFdWpU4cOHDigUZ4cHG8RadBjCAAwdOjQ4kibQqEQn332GbsGcTCGjY0N5s+fj8jISHh5eaFr167o06cPrl+/zlgZa9euxdChQ5GRkfHOZzwer1K77ZVG0ZaXfD4fffr0ga2trdo2Hj16FPHx8QCAnJwc3LlzBxYWFujZs6faeXJwlArbLokJGjZsSADI09OTbVM4tEhubi5t27aNnJ2dqW3bthQYGKhxnqmpqTRhwgSSSqXE5/PfaSX4+Piole/u3btJLpeTXC6nGzduaGSjh4fHO3aJxWLy9fVlbcouR7XE8LuMiIiWLFlCPB6P1q1bx7YpHDpAqVRSQEAAubm5Udu2benIkSPljhslJSWRUqksN8+IiAjq2LEjyWSyEg9eqVRKUVFRVbYxKSmJ+Hw+NWnSpMrnvsmZM2dK7c7C6/U2PXr0oIKCAo3K4OB4jWGtQ0hKAu7dA54+BWKeA3FxhOwcID4+GoFn3NCvfxwsLM1hYc5DrZqAoyPg4gI0agS8sVc6RzWBiHDs2DEsXrwY2dnZmDZtGoYPH/7ORvIjRoxATk5OpaZmBgYGYvTo0Xj58iWys7NhZGSEr7/+Gv7+/u98NzsbCAsDHj4E4uKApzGErCzg1StAqSScC2wC7xY/wNV1EGo68uDgADg7A25ugJlZ5a6xefPm72xwIxAIYGxsjPbt22Px4sVqrZfg4CiFKL12COHhwOkzQNDfKvxzhQe+gODkrIRt7QKYWhXA3EYFiVwFHg+4eX41mrWfgoJ8HjJS+UhLEiAtQYjnj4V4Hs1HvQaEjh146NKJh27dAKmU7avjYJJLly5h6dKlCAsLw5QpU4rDYsTFxaFBgwYAgE6dOuGvv/6CqIK3A4VCgV9++QVLlixBbm4uZDIZkpKSkJoqwKlTQNDfhIsXgYQEoHZ9JRzrFcDCtgCmVirIzVXgCwgmYsK/gVvg2WoUMl8ZIT1FgLREAeKfivAkQgC5KdCuHdC5Iw89egA1a75rx5UrV9C9e/fidRlGRkYQCoX48MMPsXDhQri6ujKuI8d7jf45hGfPgA0bgT17CXkKQrMOuXDxzoOrlwKmlqoyzyOVCrwyYr8rlcCzCBHCbhgh/F8ThN0UoV07YPRnPPTpAwirzUaiHLdu3cKKFSsQFBSEsWPHIjExEZs3b0ZeXh6kUilatGiBkydPViqGUnx8PCZN8sNff+2Dm8cRxMb2QjNfBRp558K9hQIOdcuP3kpEZW4tmvRCgLDrRoi4YYyQCyaoXZswYhgfn34KFAVHbd26Nf7991+IRCIIBAL06tULS5YsKXZwHBwMoz8O4epVYOEiwrXrQId+2WjbOxtODbUTLjk3m4eQYBOcPyhF7GMhvpoMfDWZB7lcK8VxsEBoaCgWLlyIw4cPIzc3t/i4WCyGt7c3Tp8+XW6YjLg4wH8ZYedOoI7LFVjYncX4+eMh0MLLA6mAB7eMcPGwBNcCTdC3L9Cn9zUMGtQKYrEY48ePx6xZs1CjRg3mC+fg+A/2HcKDB8BXfoSHUSr0G5cB3165EIp0Z1LcUyGObJTj1nljzJoJfPUVj2sxVBMWLVpUPL7wJmKxGB4eHjh37hxkMlmJzzIygPk/ErZuA7oMysaHIzNhZlV2y5RpsjN4OBsgRcAaP7g0ckJAgB+cnc11Vj7Hew17DqGgAPhxAbDuT8LgyenoPCAbfBZDsSTECLBjqTlexYuwfSsPpYSj4TAg8vLyYGdnh7S0tFI/F4vFcHV1RXBwMOSvm4bHjgHjJxCadcjBkCkZkJnpzhG8TXpqLk7ttMG5fVIsXsTDmDGsmcLx/sCOQ3j6FBg0hCC2UmD0D2kwtWCv4r3Nv2dNsOUnM8ycwcM3X5fe/8uh/2zcuBETJkyATCZDfn4+cnJyoFKVvM9MTEzg4uKCs2fPY96Pchw7qcIk/1Q08Mxnyep3efFEiLUzLODaQICtm3kwNWXbIo5qjO4dws2bQO++hL5j0/HB0OyKT2CBlAQBVnxtidbNBVi/jgcuiKThkZKSgmfPniE2NhYJCQl4/vw5njx5gujoaMTHxyMxMREZGRnIz8+HXO6Nxm2OYuISwESiF0NqJVAWAP/7xQxRN8Q4c6pw+ioHhxbQrUO4cQPo2Zsw/qdUNGvH3jaKlUGRy8Pqby1Q09IIe3bzUMYEJg4DJiMDaNsuEbYNnmLABIJtzVpsm1QuJ3dKEbhLjiuXeLC3Z9sajmqI7hzCo0dA23aE8YtS0aSNfjuDIpQFwM+TrNCyiQi/reK6j6oTBQVAt+4EM6ccjJrxim1zKs3JHVJcOSzH1SvcrDgOxtHNBjn5+cDgjwmDvko3GGcAAAIh8PXKFBw/pcL+/Wxbw8EkPy4A8gQKjJxuOM4AAD4cmYV6zXPw5UT969riMHx04hCW+BNktgp0HsDMmMHeNb9goIsDhjauw0h+5WEsJnz1cyomTSakpGi9OA4dcPs2sGGTCuMXpqGMdWN6zYhv0/FviApHj7JtCUd1Q+tdRgkJgLsHwf9AEixtlYzleyP4LJZPGYs9d58wlmd5bF9qhroWYqz4xQCfIBwl6NSF4NHtFTp99O6+x4ZC6DUj7FhkibD73LoZDsbQfpfRH+sIvn1yGHUGbNB/XAa2bQN0uN0vhxa4cwd4FE3o2M9wnQEAuPsoILMswIkTbFvCUZ3QukPYshXoPDBLa/nf++cSJn3QBiNbuODP+TOhrQaPqYUKjVvncWMJBs7mrYQOH2WBx8Cd/2bX5b1/LuGrD9thkKsjlk76HA/vhGCgi8M7aenk0ZoX/JqOg7KwcTM3lsDBHFp1CNHRgJIINRtoJyaRSqnCzQvnsGz/Kcz6fSvO7N2Bu/9c1EpZANC0Qy7OBHIV0JA5Gwh4dcqt+IuV4OPJ0zBr3TYolUpcOXUUi3YdxvTfNhV/PvBLPxx48AIHHrzAj9v2QSyVYeS0OYyUDQDNO+Ti4kVApT/rOjkMHK32PoaEAM6NtbfqU6ksQO9Px0Jqagq3Fq3gWK8BnkWEo0mb9lopr2GTfBzboJWsOXRAbi4Q8xSoVZ/ZFxSVUomBX/rB1MISPl17wKdrDwBAwyaF8U8yX6Vh9Ywp+HTGPDjUrc9YuRIZwdxKhUePBHB2ZixbjvcYrbYQ4uMBcxvtjR0IBEJY2f23QkdqaobsLO118lvWUCI5UWvZc2iZpCTAwpoY6S56E4FQBGv7spcP/zH3OzTwbIpuQz5htmAAVrYqvN5umYNDY7TaQsjNBUQm2mvP8gUla3ZZseeZQmREyMvlZhkZKjk5gJEx811+fH7Z90TQ/t14ePsGfj1yjvFyAcBETMjWzwgwHAaIVlsIFhZATnr1ifmQmc6HmTk3hmCoWFoCma9059DjnkZjy5J5mLL0N8jNLbRSRnoaH1ZWWsma4z1Eq0/runWBuCfVZzPjuKcC1HbiHIKhYmkJ5ObwkJ2pfaegLMjHimkT8cHHI+HZ2rf4+PzPhzBWBhEQGy1AnTqMZcnxnqNVh+DjAzy8J4SS4UlGJ/+3BUu+/BT5CgUGujggKz0dX33YDg9uXkfAml/w28ypzBb4mvAbRmjnW31aPO8bfD7Q3Jvw8LYRI/m9fR+e/N+W4s+CD+3Ho/t3cHjzHyWmnSbFPmekbACIeyKEuTlgbc1YlhzvOVpfqdzlA4J33zS07MbMVD82mTWoBrasF6BNG7Yt4VCXtb8Dh8/l4stFqWybojEBv8lRWyrFsqXcuBYHI2h/pfKEcTyc2SWr+It6TniIEVDA55yBgfPJcCAk2BhpyYbd0lPk8hD8lwRjvuCcAQdzaL1WDBgAFGQJcfO8sbaL0hpEwO5fTfHTAq7yGTrm5sCECTzsX2vYW4+d2CFF5048NGzItiUc1QmtOwQ+H1izmofNP5kj00BnHJ3cKYWFVIhBg9i2hIMJZkwH7l8xwb1/DPMlJSZKiFM7ZfBfzL2gcDCLTp7QHToAI4fz8ccsC6gMLMbdg5tGOLpJjt3/4xlkqGSOd5HLgV07efhjjjmS4wxrf9SsdD5Wfm2J1at4qF2bbWs4qhs6e2VfvAiwkYqwYb45yEBirzx9KMTKbyyxby8PNWuybQ0Hk/j6Agvm8bF4rBVevTSMlmteDg/LJlpi+BA+hn7MtjUc1RGd1QSBAAjYy4MyzQSrv7NAvkK/X7fDrhthyThrbN7AQ3vthEbiYJlx44DJX/Ixb4QN4p/pd0shPYWP74enQZUzEaNGPmTbHI5qik5fjUxMgJPHeahtZYwfP7VG4nP9q4REhWMGa76zxF/7eejdm22LOLTJt9N4+OlHPuaPssGNYP0cU4i4bYQ5Q20wYog9Ph3ljC5dumDgwIG4du0a26ZxVDO0vg6hLNavB+bOIwycmI6ug7MZDzimDonPBdjykzn4ChEC9vBQqxbbFnHoipAQYMhQQiPvXAz9Jh0yU/b7NfNyefhrvQwXD0mxbSsPH3xQeFyhUGDPnj3w9/eHpaUlZsyYgd69e2s9lhdHtSeKNYcAAA8fAl9OJMQlKzHELx1N2uSxYkfmKz6ObZHh3AEJvp8NTJ7MbUv4PpKZCcz/kbB9J6Hf2Ex0HZQNkRaC4VWESglcPCbG/rWm6NqJh+U/82BjU8r3VCocP34cS5YsQVZWFqZNm4bhw4dDyN28HOrBrkMo4vBh4PsfCBAp8cEnmWjZLRdCkfbNin8mROBeCc4flmDYMOD72TzY2Wm9WA49Jzy8sPV6/nwUPhxli04f5cDMSvsthuwMHi4cEePUTjkaNuBh0UIeWras3LmXLl3C0qVLERoaCj8/P4wdOxYSiUS7BnNUN/TDIQCv++5PAqvXEEJuAq265cC7aw7cWiggYHCoISVRgOuBxrh+VoK4p0J8MZqHiRMAh7LD2XO8h1y4cAGDBg1F1w+Ccfq0M1y9FPDukgOvjnmQMtidpMjl4dZFY9wIEuPWBeDDnsbw+4oHHx/18rt9+zaWLVuG4OBgTJo0CZMnT4aZmRlj9nJUa/THIbxJTAyw/wAQsJ8Qeh9wbZaPBk3y4ORSgNrO+bBxVFZqTUBuNg/PHwnxNEKE6FAjPAgxQkYaH337AIMH8dC1K7iuIY53OH/+PIYOHYrdu3ejY8eOyMoCjh8H9u4jBAYCDrWVaOSVh7ru+ajVoAA16xdUqkWrVALxT4V4+lCIp+FGeHjTGNERArTxBdq1CcfOnUNw9eplRh7g0dHRWLZsGf766y+MGzcOfn5+sOLiZHOUj346hDfJyAAuXwYuXwFu31Hh/n0e4uMAM3OCla0KEhmBLyQYmwDZmTwoC3h4lcJDcgIffB7g3IjQ2JOHFl6F00ddXcEtMOMok1OnTmH06NE4ePAgWrVq9c7nBQXArVvAhYvAzVuEe/cJUQ95EEsASxsVTC1U4PEBmZkKWRl8QAW8SuUjNZmPzHQe6tQjuLsBXs14aNcOaNECMH49uWn69Om4c+cOTpw4AQFDzeKEhASsWLECmzdvxrBhwzBjxgw4cM1hjtLRf4dQGkRAQkJhys4Grl27gq1b5+KXX4JgZgaYmgI1awJiMduWchgSJ06cwJgxY3D48GG0aNGiSuempwOxsUBExCN8/XU/bNhwH0DhvSiVAvb2hfsxlIdKpUL//v3RqFEj/Pzzz+peRqkkJSVh7dq1+OOPP9C/f3/MnTsXNbnVlhwliQJVAy5fvkydO3dm2wwOA+bIkSNUq1YtunPnjkb5XL16ldq1a6f2+enp6eTh4UEbNmzQyI6ySE5Opnnz5pGtrS2NHDmSIiMjtVIOh0ESqQez/zk42CUgIAATJ07EiRMn0LhxY43ySklJgWVFTYFykMvlOHLkCObNm4cLFy5oZEtpWFlZYf78+YiMjISXlxc6deqEUaNGISIigvGyOAwPziFwvNfs3r0b06ZNw+nTp+Hh4aFxfikpKRoP3tatWxe7d+/GiBEjEBMTo7FNpSGXy+Hn54fw8HB4enqic+fOGDFiBB4+5MJivM9wDoHjvWXjxo2YPXs2goOD4ebmxkiemrYQimjfvj2mT5+Ovn37IisriwHLSkcmk+G7775DZGQkvL290alTJ3z++eeIjo7WWpkc+gvnEDjeS9avX48lS5bg3LlzqF+/PmP5pqSkwMLCgpG8Jk+ejFatWmHUqFEgLc/9kEgkmDp1Kh4+fIimTZuiXbt2GDVqFOcY3jM4h8Dx3rFy5UqsXLkSFy5cQN26dRnNOzU1lZEWQhGrV69GamoqfvrpJ8byLA+pVAo/Pz88ePAA7u7uaNWqFcaPH4+4uDidlM/BLpxD4HivWL16NdavX4+///4bjo6OjOfPVJdRESKRCPv27cP27dsREBDAWL4VIZPJMGPGDISHh8Pe3h7NmzeHn58fEhISdGYDh+7hHALHe8OGDRuwdu1aBAUFwU5LQauYdghA4cygw4cPw8/PDyEhIYzmXRGWlpaYP38+7t27B7FYDE9PT8ycORNpaWk6tYNDN3AOgeO9YOPGjVi+fDnOnTun1ZW62nAIAODm5oZ169Zh8ODBSExMZDz/irC2toa/vz9u3ryJnJwcuLm5Yf78+UhPT9e5LRzag3MIHNWezZs3Y/HixTh9+rRWuoneRFsOAQD69euHL774AgMGDEBeHjuh4mvWrIlVq1bh0qVLePLkCdzc3LBhwwYolQa2WTpHqXAOgaNas2XLFixcuBDnzp1DnTp1tF6eNh0CAMyePRtOTk748ssvtVZGZahXrx62bt2KwMBAnD17Fh4eHti3bx+rNnFoDucQOKotW7duxYIFC3TmDIgImZmZkMvlWiuDx+Nh06ZNCAsLw+rVq7VWTmVxcXFBQEAA1qxZg8WLF6Nr1664desW22ZxqAnnEDiqJXv37sWPP/6IoKAgxqeWlkV6ejrkcrnWt7I0MTHBoUOH8Msvv+DEiRNaLauydOnSBSEhIRg/fjwGDhyIIUOG4OnTp2ybxVFFOIfAUe0ICAjAzJkzERgYiHr16umsXG13F72Jvb09Dh48iLFjx+pNuAk+n4/Bgwfj/v378PLyQqtWrTBz5kxu4NmA4BwCR7Vi//79mDZtGk6ePMnoCuTKoEuHAABeXl7w9/dH37599WoaqEQiwYwZM3Dv3j3k5OSgYcOGWLVqFQoKCtg2jaMCOIfAUW04cOAApk6dijNnzsDFxUXn5evaIQDAyJEj0bdvX3z88cd6N9PH2toaq1atQmBgIE6dOoWmTZvqTRcXR+m8dw7B29sbPB4PPB4PW7durfR51tbWxecFBgZqz0AOtTh69CimTp2KoKAguLq6lvk9bf7+L1++rNAhaKN8f39/iEQizJo1q9L5VQSTdnp4eODkyZNYsWIFZs6ciT59+uDx48eM2VoVuPpfPu+dQwCAOXPmgIjw2WefFR87ePAgXF1dYWJigqZNmyIoKKjEOcnJycjIyNCxpRyV4e+//8a4ceNw5MgRNGrUqMLva+v3r2wLobTyAWDVqlUQiUSIiop655zyyufz+di9ezeOHz9epYdcVe28fPkyevfuDblcDmtra/Tq1Qv37t2rtJ3dunXDzZs30bVrV7Rp0wbz589Hbm4uY/ZWFqb1r068lw7hbS5fvoyhQ4di+vTpePHiBYYMGYLevXvjwYMHbJvGUQHXrl3DsGHDsG/fPjRr1kytPJj6/dWNdJqbm4tRo0YhICBA7X52uVyOgwcPYtasWbhx44ZaeVREly5d4OnpiZiYGNy5cwdA4UM+JSWl0nkIhUL4+fnh9u3bePz4MTw9PVnvRmJC/+pCtXIIaWlpGDRoECQSCerUqYO9e/fCzs4OPB4P3377bZnnLVmyBL169cLnn38OS0tLzJ49Gy4uLli+fLkOreeoKvfv30f//v2xdetW+Pr6Fh9XKBT45ptvYGtrC3Nzc3Tr1g3nz58vMx+mfv+iSKdVLf/+/fsYOXIkli5dWqXy3qZRo0bYunUrhgwZgqSkpHK/W1UbAcDW1haLFy+Gubk5HB0d8euvvyIhIQEXL16ssq12dnbYvn07Nm3ahBkzZqBPnz4aT1NVt/4zpX91oFo5hMmTJ+Pu3bu4fv06QkJCEBQUhFevXmH37t3lVu4LFy6gTZs2JY75+vpqZQtDDmZ49OgRPvzwQ6xatQo9evQo8dm3336LQ4cO4dSpU0hISMD333+PYcOGlZkXU79/0W5pVS3f29sb3bp1q1JZZdG9e3d89tlnGDBgABQKRZnfq6qNAPD06dMSayzMzMwAFK6LUJf27dsXdyO1bNkS8+fPVzssh7r1n0n9DZ1q4xDy8/Oxe/duzJo1C+7u7rCyssLSpUsr7KPMyMhARkYGbGxsShy3tbVFbGysNk3mUJMXL17ggw8+wPz58zF48OASn6WkpOCPP/7A7Nmz0axZMxgbG6NDhw548eJFqXkx+funpKRAJBJVqXxtMHfuXNjb22P69Oll2smEjUFBQWjQoAG6dOmikb0ikQh+fn64efMmHj9+jMaNG+P06dNVyiMpKUmt+s9RkmrjELKzs6FSqUpshWhhYVHh/rZFO1G9vbqUiLS+4pSj6iQnJ6Nbt26YPHkyvvjii3c+j4iIQEFBQaX3R2by909JSUF6enqVytcGPB4PmzdvRlBQEDZt2vTO51XVqDTS0tKwYMECbN++HUKhUBNzi3FwcMD27duxbt06fPPNN+jTp0+l95R++PChWvWfoyTVxiGUtcVgRXOzTU1NIZfL3wkpnJiYqNUwyRxVJz09HR9++CGGDx+Or7/+utTvVHWrSSZ//5SUFK3GMaoKMpkMR48exbx583Dt2rUSn2m6HWdGRgY++ugjLFq0CK1bt9Yor9Lo1KkTbt68iVatWsHHxwfr16+v0GZ16z9HSaqNQ5BKpeDz+QgLCys+lpSUVKkVnO3atcOVK1dKHLt8+TLat2/PtJkcapKTk4N+/fqhTZs2mDNnTpnfc3V1hVAoxP379yudN1O/f0pKCry9vatcvraoU6cOtmzZgoEDB5boDlJHoyJiY2PRu3dvzJ49G4MGDWLS3BIYGxtjzpw5uHz5Mvbv34927dqVO+urUaNGatd/jv+oNg5BJBJh2LBh8Pf3R1hYGF6+fIm5c+dCKpVWeO6MGTNw/PhxbNu2DampqVi6dCnCwsLwzTff6MByjorIz8/H4MGD4eTkhJUrV5b7XQsLC0yYMAFLlizB7du3kZeXh5MnT8LR0RFZWVmlnsPU7//q1Ss4OTlVuXxtUtS9NmjQoOLBWnU0AoC7d+9iyJAh+P3334sHYQMDAzFz5kyt2V+vXj2cOXMG48aNQ9euXTF//vxSB8ttbGzUrv8c/1FtHAIArFmzBp6envDy8kKLFi3Qq1cvyGSyCs9r3749du3ahSVLlsDOzg67du3C0aNHS/RHcrCDSqXCqFGjYGxsjE2bNlWqX3/58uXo168fPvjgA1hYWGDBggU4ePBgmQ8HJn7/zMxMSCQS8Pn8KpdfUFAAHo+Hdu3aAQCcnZ1hbW1d6bIrYvr06XBycsLUqVOLj1XVxtzcXPj6+uLKlSvw8PAoXrWri9k5PB4Po0aNwo0bNxAaGooWLVrg+vXr73xP3fqvbf0NCqoGXL58mTp37lzqZ7a2trR79+7iv728vAgAAaAtW7ZUugwrK6vi886ePaupyRyVQKVS0fjx46lbt26Um5vLSJ7a+v2fPn1Kzs7OrJVfEdnZ2eTl5UXr16+v1Pf1uZ4cOXKEnJycaMqUKZSZmVnud7n6XyUimZkeYECou4ozOTmZYUs4KmLmzJm4d+8ezpw5A2NjY0by1NbvX9mwFWzdf2KxGAcOHECbNm3g4uJS4fiIPteTPn36oF27dpgxYwaaNGmC9evXV3rqqz5flz5QrbqM3iQ+Ph48Hg8JCQkYNmxYuSsVOfQPf39/BAUF4eTJkwbRD8xGpNOq4uTkhB07duCTTz7B8+fP2TZHI8zNzbF+/Xps3rwZkyZNwqhRo0qE0ODqv3pUW4dgZ2cHIipOXBgKw2Hnzp3YvHkzjh8/DlNTU7bNqRSG4BAAoHPnzpg2bRr69euHnJwcts3RmPbt2yMkJARWVlZo2rQpjhw5AoCr/+pSbR0Ch2Fy/PhxzJkzB6dPn4atrS3b5lQaQ3EIADB16lQ0bdoU48ePZ9sURpBKpVixYgX27duHWbNmYdSoUdx0UzXhHAKH3nDt2jWMHTsWhw4d0tk+yExhSA4BANauXYuIiAisWbOGbVMYo2XLlggJCYGDgwM8PDyKWwsclYdzCBx6QWRkJAYMGIBt27apHcaaTdQNfc0WJiYmOHToEH7++WcEBwezbQ5jmJiYwN/fH/v378f06dMxZMgQpKamsm2WwcA5BA7WefHiBbp3744VK1YYbNRJQ2shAIC9vT12796N4cOHIzo6mm1zGKVVq1a4desW6tWrBy8vr3c2POIoHc4hcLDKq1ev0LNnT0ydOvWdyKWGhCE6BABo06YNvv/+ewwYMADZ2dlsm8MoYrEY/v7+2LFjByZOnIjx48cjMzOTbbP0Gs4hcLBGTk4O+vTpg759+2LKlClsm6MRhuoQAGDixInw8fHBuHHj2DZFK7Rt2xa3bt2ChYUFmjZtWq26yJiGcwgcrKBUKjFixAi4uLhgwYIFbJtTZeLi4nD37l3ExMQgKyvLoB0CUBj24dmzZ/jll1/YNkUrSCQS+Pv7448//sBnn32G8ePHsxJbSt8xWIcwZMiQ4ngqbdu2xblz54r/5vF472z+zaFfTJ06FQqFAr///jvbpqhFZGQkvLy84O7uDmtra4SGhsLHxwe1atVC48aNsWHDBrZNrBIikQgBAQFYvXo1Tp48ybY5WqNbt264c+cOFAoFWrRogZCQELZN0i/YDJyhCYcPHyYzM7Pi+CJvJicnJ7bN43hNQUHBO8e+//57atmyZYVxaPQZhUJBYrG41PvP2NiYQkJC2DZRLf755x+yt7enqKioEseDg4NZskh7HD58mBwdHWnRokWl3qfvIZEG20Lo0aNHqZtfmJiYlLqTFofuycnJQYsWLRAZGVl8bN26dfjrr79w4sQJgwhJURYikQje3t6lfubi4oLmzZvr2CJmaNWqFfz9/TFgwABkZWUhKysL/fr1Q/fu3avdgGzfvn1x8+ZN/Pvvv/D19UVUVBTbJrEP2y5JE4YPH058Pr/E25lUKqXHjx+zbRoHEW3ZsoWMjY3J3Nycrl69SocOHSInJyd6+vQp26YxwsqVK99pJcjlctq3bx/bpmnMpEmTqFevXtSgQQMSi8Ukk8nof//7H9tmaY1t27aRvb19paPBVlMiDdohBAUFvdNt5O7uzrZZHK9xdXUt/l3EYjHZ2NhQaGgo22YxRnh4OMnl8hL3n6WlJSkUCrZN05izZ8+STCYjgUBQfG3t27dn2yyt8vjxY2rbti0NGDCAkpKSSv1Oamqqbo3SLYbbZQQAHTt2BJ//3yVIJJJqO3XO0Lhz506JDdJzcnKQlZWFs2fPsmgVs7i4uJQIyy0Wi/HNN99AJBKxaJVmEBEWLVqE/v37IzMzs0S37I0bN/Dy5UsWrdMudevWRXBwMHx8fNCsWTMcO3asxOdBQUHw8fGpFkEBy4Rtl6QpEyZMIKFQSABIIpFQfHw82yZxENGIESNKvF3ijS69adOmkUqlYttERhg2bBjxeLzi+y85OZltkzTijz/+KHWgvOi3W7duHdsm6oR///2XGjZsSOPGjaPMzExKSkoiS0tLMjIyoi+++IJt87SFYbcQAODzzz+HRCIBADRp0sSgImRWV9LT03Hw4MFSB/15PB5OnjyJZ8+esWAZ8/Tv3x9yuRwCgQD9+/eHlZUV2yZpxJdffonDhw/D2toaJiYmJT7LysrC+vXrWbJMt/j4+CAkJARKpRI+Pj4YMGAAMjMzoVAosHfvXpw4cYJtE7UD2y6JCezs7MjY2LhKW+JxaI/ffvuNpFLpO2+XlpaWtG7dOlIqlWybyBjJycnFg6537txh2xzGSEtLo3HjxpFUKi1uAeF1KygmJoZt83TKlClTSCaTlbifraysDL41WAqG30JIT0/HsGHDoFQq0alTJygUCrZNMngKCgqQmppanNLT06t0/vLly4tXgYpEIkgkEkydOhXPnz/H+PHjS4z7GCr5+flITU0Fn8+Hg4MDnJ2d0bhxY7bNYgwzMzOsX78eFy5cgLOzc/Fm9SqVCrt27apUHnl5eSXuI0NcGRwWFobNmze/M+W26LnDBDk5OSV0YjOmFI+IiLXSK8GrV69w7do13L9/HxE3byIyNBRxCQmIT01FvlIJEZ8PIx4PmQUFMBEIoAKQp1TCUiaDvbU1ateujUZeXnD19ETz5s3h6uoKHo/H9mWxTnx8PK5evYrw0FCEXb+Oxw8fIi45GQlpaTAWCAAiWBgbQ6FUIkupRL5KBSOhEHYWFnC0t0fDxo3h5uWFxo0bw9vbu7h74dKlS+jZsycyMzNhYmKCXr164bfffoOdnR3LV1x1nj9/XqjR/fsIu34dTx8/RmxiIpIzMmAsEIAPwMzICEk5OSAAKgBSY2PYWligpqMjXJo2hUvTpmjSpAm8vLwMdrA5Pz8f/v7+WLZsGbKzs1GvXr3itSXR0dG4du0awu7dQ/j163j25Alik5KQkpkJY4EAAgCmRkbIKShArkqFPKUSchMT1LCwQO1ateDSrBlcmjRB8+bN0bhxYwiF+rPNe25uLjw8PBAdHQ2VSvXO5zKZDKtXr8bnn39ebj75+fm4efMm7t69i4i7dxFx+zaexcQgMTUV6Tk5MBYIIOLxIBOJkF1QgLy3dKrp6IhGTZrApWlTeHp6wsvLi7E9xt8iSu8cQm5uLs6fP4/j+/fj7zNn8CIxET4mJvDMzkYjhQKNADgAsAMgeeO8cACur/9PABJfp2gAD3g8hEuluM7nI66gAK2aNUOPIUPQq3dv1KtXT5eXxxpZWVkIDAzEsb178XdQELIzM9FaJIJHZibclEo0AGAPoAaAsqpkNoAXAGIBPAAQbmKCmyYmuJuTA/f69dF94EAEX7qE4OBgtG3bFuvWrYO7u7tuLpAB0tPTcfr0aRzbswd/BwcDeXloIxDAIysLLkol6qPwvqsBQPDGeREAGrw+lolCfYo0ChWLcdPYGOG5uWjaqBF6DB6MPv37G5QuRTx69AjDhg3D9evX0atjR9y8dQsSlQotgUKNVCrUB2CLQo3Keu16hcL76DkK622YRIIbIhEe5eXB28MDH378Mfr2748GDRro5LrKIioqCnPnzsWJEyfA4/GQlZWFgoKCEt+RyWS4d+8e6tSpU3yMiHDr1i2cOHIEpw8cwL2oKLiamKCZQgHX7Gy4AKiJwnupvB000vFffYsAEC4W45axMe7l5MCtbl10698fvT/6CN7e3ky1uqP0YgxBpVJRcHAwfTZ4MFlJJNTVzIxW8PkUCpASIGIwpQJ0FKAJYjE5yWTUrH59Wvnrr5SYmMi2DIyjUqno3LlzNKJ/f7IUi6mXmRmt4/HoEcOa5gF0GaCpIhGJBQKyMzOjH7//3iAWoCmVSjpx4gQN6t6dLMViGmBqSpsBimFYo2yA/gboW2NjaiiXk2vNmrRsyRKKi4tjW4IKUSgUdPDgQerdvj1ZicXU2sSEPgcojmGNMgE6A9AUExOqK5NR03r1aPXKlfTy5Uu2JaD79+/TwoULyd3dncRiMUkkEgJAfD6fmjRpQgUFBRQREUFzvvuOaltZUVMzM5otEtFFgHK0UN+uAPSDUEjeZmbkaGFB0/38mFjjw+7CtLy8PNq8aRO5165N3qamtJbHo5cMi1dRugTQOImEbCQSGvvJJxQeHs6mJIyQn59PO7ZvJ886dcjH1JTW83iUpgMtUwEqAOg+QNOMjclOIqFhffrQ7du32ZbkHXJzc2n9unXUwM6O2pua0rbXDyRd3Xc3AJokFlMNiYS+GDaMHjx4wLYk75CRkUErli8nJ2tr6m5qSnsByn1tP9MvamXVzS9e182vxoyhJ0+esC0JERG9ePGCNmzYQJ06dSpeqd6oTh2qJZXSHCMjitDxM+wxQPNFIqork1FXHx86deqUutO62XEIKpWK9u7ZQ/VtbamfXE4XdSxgaSkNoKVCIdWUSmn00KH0/PlzNqTRmBMnTpBLzZr0oVxO51nWNAug3/h8cpJK6ZP+/fVmdsrePXuobo0aNFAmo+ssa/Tq9X3nIJXSl59+qhctVaVSSZs2bCBHc3MaKZXSfZY1SgZonkhEthIJffvVV5SWlsa2REREdOvWLerUogXVFYvpQ4CesaxTAUABAHnL5dTG05P++eefql6S7h3Co0ePqFOLFtRGLqd/WBawtJQJ0AIjI7KVyWj1ihUGs4AqKSmJBvboQZ4yGQXqgY5vphyAFolEZCuT0drVq1nTNCYmhrq1bk0t5XK6qge6vJnSAZplbEz2pqb0v507WdGHiOjhw4fU2tOTusjldFcPdHkzJQP0lVhMNS0s6OiRI6xplJWVRVPGjaPaUilt5fF00lqqSlIBtJfHo/oyGX0xbFhVHKhuHcK2zZvJTiaj3wUCUumBcOWlaIC6yGTU2ceHEhISdClTlQkODqaaFhY0z8iIFHqgXXmadpDJqGf79jqPCXP40CGyNzWlX4VCvavAb6ZQgLxkMhrWty9lZWXpVKOi+rmRz2ddh/LSNYBcZTKa8NlnOo8bdfv2bXJ2cKBxYjGl64EW5aVsgL42MaE6NjaVbS3oxiEolUqaNmkSuctkFKkHQlU2qQBaIhRSXRsbvV10tHnjRqopk9ElPdCrMkkJ0GwjI3KpWZMePXqkE41+XrKE6spkdEcPrr8ySQHQlyYm5N2okU4GnVUqFc2aNo3c5HKK0oPrr0zKBuhjsZg6eXvr7OXi4IEDZC+X0xEej/Xrr0oKBMhBIqHtFS/c1b5DUCqVNOaTT+gDmUzvPWpZ6QiPR45mZnTr1i1ty1UlNqxbR85SKUXrgUZVTVv4fKpjY0PR0dFa1Wjx/PnUTCajeD245qqmn4VCcqtdW+st1K8nTKD2MplOJh4wmVQAzTA2ppbu7vTq1SutarRr505ykkopVA+uW530CCBnqZTWr11b3mVq3yF8O3kydZNKGZ96pet0kscjR3NzrT/AKsuRw4epnkxGT/VAG3XTZj6fGjo6am2QcPPGjeQhk1GSHlyrummpSERejRpRTk6OVjRa+tNP1Fomoww9uFZ103fGxtSlZUut7Xp28uRJqi2VGlTvRmkpBqAGMhkF7N1b1qVq1yEE7N1LLjIZvdLCxXnhv7giW6pwntUb552tYpkb+Xxq5uystcpZWaKjo8nB1JRuG7ieBNAMIyP6qFs3xjW6c+cO2Uul9LgaaDRaLKZxI0YwrtH58+eptlRKCQaukQqgvlIpzfn2W8Y1Kqpr1xjUiE2twgCyl8nKWrOgPYfw8uVLcjAzo3taELJIzDmlHD8AkAtAxgA1AUqdcZOhppgE0CcSCc2bNUtbslWKXh060GqBQCd6VkZTTfTMB8hHLqf9DO4yplQqqaWbG+1huK+3PI0IoJUACYFS3yQ10SgboIYyGZ0/f54xjfLy8qiRoyPjM9JK0+gSQL0AkqHwYdYTKHUGkyYapQBUUyqle/fuMaYREdGH7drRKobrWmXup/LuJU212s7jURtPz9Jm+2kvuN2PM2fik9xceGirgFK4DGAogOkoXPI9BEBvFIYQYIpfsrOxbvVqxMbGMphr5QkMDETMzZuYWEpoaW2gbU2FAFZnZGD6pEnvhAVQlz27d0MSE4OPiRjJryJyAYwCEACAmSsoiRjAL5mZmMbg5k9/rFmDxmlp6MJYjmXTBYAngBgAd14f6wYghcEyLAAsyMnBd19+yVieJ06cQPzt25iko7oGaP9eAoARRBA9eYLdpQUpZNSdviY9PZ1sNGiKpgI0ECAxQE4A7QHI9rVHnFaOd+0FUP+3jjUF6AsGvSsBNN3IiL7/7jttSFchfTt1ov+p+eabB9DXANUAyAygrgAFV/C2UhlNNdWTAOpqakp//fUXIxq1cnNT2xZ1NLqOwpALF1/rwHQLoSg1MzWly5cva6yPSqWihvb2dFNHGtUGSkwzf/Bai0MMa1QAUB2ZjLFV311btqQDatqSCvWeYZW5l5jQKhCg5s7Ob1+ydloIBw8eRDceDzXUPH8ygLsArgMIARCEwoBYuwEsL+e8CwDavHXM9/VxJhmnUGD75s0M51oxaWlpuHz1KgYSqXX+twAOATgFIAHA9wAqCuCrK03HpKdj5++/a5zP48ePEf/smdpvvupo5I3CN15t83lGBnZu2KBxPteuXYNpdjaaqXl+VTV6ipKB7sxe/2tSync1QQBgZG4udm3frnFecXFxuH/vHvqqeb66zzBd3UudAWTExyM8PLzEca04hODjx9HtrfjhlSUJhaLNAuAOwArAUhQ2pcoj43Wyeeu4LQqjBTJJfQBChQKPHj1iOOfyuXTpEtoYG0OdwLcpAP4AMBtAMwDGADqgsBuoLHSpaRcAF69eBanp7IoIDg5GF5QdabM81NFIl3QhwoWgII3zCT53Dl3V3BeYCY2CUBgdVhvdVV0KCnCBgd3MgoOD0UkoLDPyb3mo+wzTJTwAXQsK8Pe5cyWOa8UhhN6+rfbbx0MUxpV3e+OYBQpFLY+ix8jbDwIq5RgTNOfzERoaqoWcyyY8PByNMzLUOjcChX2SVRnT0aWm1gCMVCokJSVplE/47dtorObLiDoa6RJXANHx8aVuTVoVwm/cQGM1N5LSVKM0AAsAbEfZYdY1oSmA0KgojfMJu3sXzaq4MVQR6j7DdE3znByE3rhR4phWHEJyaqra3UVlvR9WVAVMAchRuAfCmySicP8EprHNz9f44VVVkl+8gI2aDwN13rt1rWkNkQjJycka5fEyLu6dFk1l0axton14ACyNjJCSotlw7MuEBFY0ygDwEYBFAFprkE95mAHIyssrdUObqpAcG8u4Rrobmq4cNQAkvSjZttOKQxAKBGqPkDdCoVFhbxxLQuGbRUW0A3DlrWOXAbRX05byUPD5Ot8BS2RsrLaurih8I7tfxfN0qWk+kcaaCkUinWukS/KJYGRkpFEebGgUi8LZabMBDFKz7MpQ3KrVcFdETTTS5BmmS/KBd+4lrTiEGtbWiFPzXBsUDlD5o1DQlwDmApBW4twZAI4D2AYgFYX9dmEAvlHTlvKIEwpRo4a67SD1sLG3R7yaDwMLABMALAFwG0AegJMAHAGUt9OtLjWNVyhgY6Pue1khNjVrIl7Nh4G6GumKfACZBQUwNTXVKB8bBwfEq3muOhrdReF05d/x34BpIICZatpQHkkALKRSjR1Cjdq1EafmLmSaPMN0SRwK68ubaMUheLVti6sa/CBrUDhv2QtACwC9AMgqcV57ALtQeLPavf7/UZTsy2MCAnBdoUDz5s0Zzrl8mjVrhmsSScVfLIPlAPoB+ACv520DOIjyb1RdafoIgKlcDnNzc43yaebjg2tyudrnq6NRAQq7c9q9/tsZhWMiTHMDQOP69TV+2DXz9dXZfZSLwllpV1A47sB7nbQ1k+YqAK8mTTTOp7m3N/7VwPGq+wzT1b0EAFflcnj7+pY8yMiE3bc4cuQIdTMzU3u+dWnJFqDdb/zNVhgBAugfgJrWq6cN6colNzeXrCQSSmZQV33Qk1C4kc7Y4cM11igxMZFqSCRaiZ3FtkZzRSKaw8D6l4iICKork2klDDjbGn0pFtPKX3/VWKNXr16RFcMhrvXpGZYLkJ1EQrGxsW9etnZCV+Tn51MtS0tGt5J7W0w20wiplNb+9ps2pKuQcSNG0HItLaVnK6kAcpfL1dnhqVT6d+lC2w0sRHFFSQGQo1RKUVFRjGjU1tOTTurBdTGZ0gGykUgoKSmJEY1GDRxIvzG4N4Q+PcN2ANS3Y8e3L1l7sYx+XbaMBshkGhseh/+8IfDfKj+20m2AalpYUEZGhrakK5fQ0FBylEoNLlRxeWkXj0dtGzdmTKOLFy+Ss0xWvP9vdUgrBQJGgwAePHiQWsjler1ZUFXT90ZGjAYBvHPnDtWSSjUOzqlvz7AcFEY9vXTp0tuXrD2HoFAoyK12bTpUjd7UFAC1kslox/bt2pKtUnw1ZgxNMjFhXQ8mUgpAtaVSun79OqMafdy7N/0oErF+fUykGIDsGGwdFNHZx4d+ryatzXCAbGUyxveOmDxmDE2oJnWtKM02MqIRH31U2uVqN/z1zZs3yV4mo4d6IAITabKJCQ3p1Yv1fZbT09PJtXZtCtDzrQ4rSkqAekmlWokLlZCQQE7W1hSkB9epScoDqLVMRqsZ6Bd/m8ePH5O9qSmF6MF1apIyAHKXSmmXFvaizsjIIPc6dWiHgde1onSYx6P6trb08uXL0i5X+xvk/G/HDqonldITPRBDk7TQyIiaOTuz1lX0NqGhoeRgakrn9EAbdZIKoPFiMfVs315rG5tcuXKFHGQyg33g5QM0SCqlkQMHakUfIqITx49TLamU0fE+XaZsFO59/s3EiVrTKCIighzNzemYgfd2/A2QvVxOt2/fLutSdbOn8qY//6R6Uind1wNRqpqUAM00NqamDRpQcnKyLuSqNFevXiV7uZxOGNiNqgBojFhMnVq0oOzsbK1qdOrUKXKQSg1mz+milA3QQImEBnTvTvn5+VrVaM+uXVRbKjWYPaeLUhpAXaVSGvPJJ1pvtd+5c4cczc1pt4G2FI7weGRf8cQN3TgEIqID+/eTvVxO+w3o4fUSoD5SKfXw9dXZRt5VJSQkhJysrekXkahEiGF9TQkofKMb3LMnZWVl6USj4OBgcjA3p80GUpmfAtRCJqNxI0eSQqHQiUaHDx0ie7mcDhpI/XwAkJtUSjOmTiWlUqkTjSIiIsilVi2abmxMCj3QoDKpAKAFQiHVq1GjvJZBEbpzCEREd+/eJY86degTqVQrc+mZTEcAqiWR0Pfffqu1Lg2miI2NpY4tWtAHcjnF6IF2ZaVDADlKJLRw7lydj8NERkaSt6srDZLJKFEPtCgrbefxyE4ioTUrV+pUH6LCt2C32rVptESilW1vmUhKgNbw+WQnk9FOFiZ3pKam0uCePamZXM7oFrbaSA9QOP7Uq0MHSkxMrMzl6dYhEBUurpo9bRrZSaW0XCjUu6mBdwDqLpdT43r16Nq1a7qWR22USiX9umwZ2cpktMDIiLL0QMuiFAZQT5mMPOrUYVVThUJB82bNIjuplH4VCChPD7QpSjcAai+XU0s3t7L2u9UJ2dnZ9M3EieQoldKffD4V6IE2RekCQN5yOXX28aHo6GjWNCIi2rN7Nzmam9NYiYRe6IE2b6YkgKaYmJC9qSlt2rChKpele4dQxKNHj+jjXr2oplRK/kIhperBzdZXLqfaVla0aeNGvW8VlEVsbCx9Nngw2UsktJhlXW8BNFQmI3szM/p9zRqt94VXlkePHtHA7t3JSSqllQIBZbKo0WWA+sjl5GRtTTu2b2d9BlsRoaGh1MPXlxrIZPQnj8fqi1sgQF3lcmro4EAHDx5kW5piMjIy6IeZM8lGKqUvxWLWZ1NGA+RnYkI2Egl9N2WKOt3c7DmEIh48eEBjP/mELMViGi6T0SlAZ/1zTwFaKhCQu1xOjevWpa1btlBeXh7bkjBCZGQkjR85kqzEYhoplVIQoJO3vZcArefxqJWpKdWrUYPWrF6t9YFjdbl37x6NHDCAbCQSGiuR0GVAJwu14gFayedTU1NTcqtVizZv2qS39921a9doYPfuVEMspikmJnRDR3Uz5nXddJHLqXmDBrRnzx69fUlLSUmhxQsWkKOFBXUwM6MtPJ7OXsTSUbjquJuZGdmZmtK82bMr2z1UGuw7hCJevXpFGzdsoE7Nm5OliQkNNjWlPwG6z2AlTQXoBECzRCJqYmZGDubm9NXYsYwvitIn0tLSaN0ff1BbDw+qIRbTKJmMdgD0mCFN81AY2+lnPp86mZuTlURCI/r3p6CgIJ0N9mlKUlISrfz1V/J2diZ7iYTGSKW05/VDiQmNslG4R+4igYBam5lRDbmcxgwfzsj+yLoiNjaW/BctIk8nJ6olldJEsZgOoHAVLhMaZQJ0DqB5QiF5mZmRvZkZTR4zhkJCQti+9EpTUFBAJ06coGG9e5OlREIdzc1pKZ9PFwHGYmvlAnQFoOV8PnU1MyMLsZgGde9Ohw8fZmICQiSPiEg7sfTUJy0tDadPn8a5Y8fwz4ULeJ6YCFcTE7gWFKBhVhYciGCHwkiLFq/PMUZhKN5cFO5dmojC8K5PjIzwQCJBmFKJFJUKPo0bo0337ujZpw+aNWumceRIQyIxMRHHjx/H30eO4MqVK8jKzISHsTFcc3PhnJMDexRGNDUHIAFgBKBoX61UFG6fGA/gOZ+PB1IpwgQCRObkwK1ePbTp0gU9+vVDhw4ddL5PBJPExsbi2NGjOH/sGC798w8oLw/uIhHccnNRLzcXjijcQtQMgBj/aUQojHefhMJ9hmP4fITJZHjA5+Nxbi6aNGyItt264cN+/dCmTRsIBAKWrlBzoqOjizW6cu0ajJVKuAuFcMvORl2FAg4o3HzFDIX7JhdppMR/dTMRwBOBAOFSKcJ5PMTk5aG5mxt8e/RAz7590aJFC/DVDD+tD+Tn5+PixYs4c+wYrgQG4m5kJOqamKCRSgWXrCw4KZWogUKdTAGI8N8zrABAOv7TKea1ThF8PqJycuBRvz5aduyI7n37okOHDjAxYWx36ii9dAhvk5GRgQcPHiA8PBxRDx7geVQUEmNjkZiUBGVBAdKysgCVCsbGxpAYG0Mqk8HewQG2tWqhdqNGcHNzQ6NGjVC3bt33ygFURHJyMu7fv48HDx4gKjQUCU+f4kVsLF6lpSE3Px85uYW7wJrJZBC93v/BtmZN1HR2hou7O1xcXODq6gpjY3V2eTYM4uLiEBYWhvDwcDwKDUViTAxinz9HZkYGchQK5ObmAnw+LGQyCEUi1KhRA/a1a6NmgwbFGrm4uBi0k6yImJgYhIeHIywsDE/CwxH/7BlexMYiOysLWXl5UOTlgScQwFwqhcjICLa2tnBwcoJjgwZwcXODu7s7GjRoAKFQG5tq6gf5+fmIjIxEeHg4IsLD8eLRI8Q+fYrE+Hjk5eUhIycHBfn5EAiFMJVIYGRkhBq2trCvXRuO9euj0etnmIuLi8YbJJWDYTgEDg4ODg6tE2W4bTIODg4ODkbhHAIHBwcHBwDg/6ShnielviZdAAAAAElFTkSuQmCC",
      "text/plain": [
       "<PIL.Image.Image image mode=RGBA size=388x550 at 0x7FF9CC99FA60>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.circuit.library import CCXGate\n",
    "dag.apply_operation_front(CCXGate(), qargs=[q[0], q[1], q[2]], cargs=[])\n",
    "dag_drawer(dag)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**d. Substitute a node with a subcircuit:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:03.905653Z",
     "start_time": "2019-12-10T21:48:03.776373Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=391x550 at 0x7FF9FC402B00>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.circuit.library import CHGate, U2Gate, CXGate\n",
    "mini_dag = DAGCircuit()\n",
    "p = QuantumRegister(2, \"p\")\n",
    "mini_dag.add_qreg(p)\n",
    "mini_dag.apply_operation_back(CHGate(), qargs=[p[1], p[0]])\n",
    "mini_dag.apply_operation_back(U2Gate(0.1, 0.2), qargs=[p[1]])\n",
    "\n",
    "# substitute the cx node with the above mini-dag\n",
    "cx_node = dag.op_nodes(op=CXGate).pop()\n",
    "dag.substitute_node_with_dag(node=cx_node, input_dag=mini_dag, wires=[p[0], p[1]])\n",
    "dag_drawer(dag)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, after all transformations are complete, we can convert back to a regular QuantumCircuit object.\n",
    "This is what the transpiler does! It takes a circuit, operates on it in DAG form, and outputs a transformed circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.154317Z",
     "start_time": "2019-12-10T21:48:03.916725Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 447.797x264.88 with 1 Axes>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.converters import dag_to_circuit\n",
    "circuit = dag_to_circuit(dag)\n",
    "circuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Implementing a BasicMapper Pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we are familiar with the DAG, let's use it to write a transpiler pass. Here we will implement a basic pass for mapping an arbitrary circuit to a device with limited qubit connectivity. We call this the BasicMapper. This pass is included in Qiskit Terra as well.\n",
    "\n",
    "The first thing to do when writing a transpiler pass is to decide whether the pass class derives from a ``TransformationPass`` or ``AnalysisPass``. Transformation passes modify the circuit, while analysis passes only collect information about a circuit (to be used by other passes). Then, the ``run(dag)`` method is implemented, which does the main task. Finally, the pass is registered inside the ``qiskit.transpiler.passes`` module.\n",
    "\n",
    "This pass functions as follows: it traverses the DAG layer-by-layer (each layer is a group of operations acting on independent qubits, so in theory all operations in a layer can be done independently). For each operation, if it does not already meet the coupling map constraints, the pass identifies a swap path and inserts swaps to bring the two qubits close to each other.\n",
    "\n",
    "Follow the comments in the code for more details."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.178919Z",
     "start_time": "2019-12-10T21:48:04.159510Z"
    }
   },
   "outputs": [],
   "source": [
    "from copy import copy\n",
    "\n",
    "from qiskit.transpiler.basepasses import TransformationPass\n",
    "from qiskit.transpiler import Layout\n",
    "from qiskit.circuit.library import SwapGate\n",
    "\n",
    "\n",
    "class BasicSwap(TransformationPass):\n",
    "    \"\"\"Maps (with minimum effort) a DAGCircuit onto a `coupling_map` adding swap gates.\"\"\"\n",
    "\n",
    "    def __init__(self,\n",
    "                 coupling_map,\n",
    "                 initial_layout=None):\n",
    "        \"\"\"Maps a DAGCircuit onto a `coupling_map` using swap gates.\n",
    "        \n",
    "        Args:\n",
    "            coupling_map (CouplingMap): Directed graph represented a coupling map.\n",
    "            initial_layout (Layout): initial layout of qubits in mapping\n",
    "        \"\"\"\n",
    "        super().__init__()\n",
    "        self.coupling_map = coupling_map\n",
    "        self.initial_layout = initial_layout\n",
    "\n",
    "    def run(self, dag):\n",
    "        \"\"\"Runs the BasicSwap pass on `dag`.\n",
    "        \n",
    "        Args:\n",
    "            dag (DAGCircuit): DAG to map.\n",
    "\n",
    "        Returns:\n",
    "            DAGCircuit: A mapped DAG.\n",
    "\n",
    "        Raises:\n",
    "            TranspilerError: if the coupling map or the layout are not\n",
    "            compatible with the DAG.\n",
    "        \"\"\"\n",
    "        new_dag = DAGCircuit()\n",
    "        for qreg in dag.qregs.values():\n",
    "            new_dag.add_qreg(qreg)\n",
    "        for creg in dag.cregs.values():\n",
    "            new_dag.add_creg(creg)\n",
    "        \n",
    "\n",
    "        if self.initial_layout is None:\n",
    "            if self.property_set[\"layout\"]:\n",
    "                self.initial_layout = self.property_set[\"layout\"]\n",
    "            else:\n",
    "                self.initial_layout = Layout.generate_trivial_layout(*dag.qregs.values())\n",
    "\n",
    "        if len(dag.qubits) != len(self.initial_layout):\n",
    "            raise TranspilerError('The layout does not match the amount of qubits in the DAG')\n",
    "\n",
    "        if len(self.coupling_map.physical_qubits) != len(self.initial_layout):\n",
    "            raise TranspilerError(\n",
    "                \"Mappers require to have the layout to be the same size as the coupling map\")\n",
    "            \n",
    "        canonical_register = dag.qregs['q']\n",
    "        trivial_layout = Layout.generate_trivial_layout(canonical_register)\n",
    "        current_layout = trivial_layout.copy()\n",
    "\n",
    "        for layer in dag.serial_layers():\n",
    "            subdag = layer['graph']\n",
    "\n",
    "            for gate in subdag.two_qubit_ops():\n",
    "                physical_q0 = current_layout[gate.qargs[0]]\n",
    "                physical_q1 = current_layout[gate.qargs[1]]\n",
    "                if self.coupling_map.distance(physical_q0, physical_q1) != 1:\n",
    "                    # Insert a new layer with the SWAP(s).\n",
    "                    swap_layer = DAGCircuit()\n",
    "                    swap_layer.add_qreg(canonical_register)\n",
    "\n",
    "                    path = self.coupling_map.shortest_undirected_path(physical_q0, physical_q1)\n",
    "                    for swap in range(len(path) - 2):\n",
    "                        connected_wire_1 = path[swap]\n",
    "                        connected_wire_2 = path[swap + 1]\n",
    "\n",
    "                        qubit_1 = current_layout[connected_wire_1]\n",
    "                        qubit_2 = current_layout[connected_wire_2]\n",
    "\n",
    "                        # create the swap operation\n",
    "                        swap_layer.apply_operation_back(SwapGate(),\n",
    "                                                        qargs=[qubit_1, qubit_2],\n",
    "                                                        cargs=[])\n",
    "\n",
    "                    # layer insertion\n",
    "                    order = current_layout.reorder_bits(new_dag.qubits)\n",
    "                    new_dag.compose(swap_layer, qubits=order)\n",
    "\n",
    "                    # update current_layout\n",
    "                    for swap in range(len(path) - 2):\n",
    "                        current_layout.swap(path[swap], path[swap + 1])\n",
    "\n",
    "            order = current_layout.reorder_bits(new_dag.qubits)\n",
    "            new_dag.compose(subdag, qubits=order)\n",
    "\n",
    "        return new_dag"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's test this pass on a small example circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.189596Z",
     "start_time": "2019-12-10T21:48:04.181850Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<qiskit.circuit.instructionset.InstructionSet at 0x7ff990428370>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q = QuantumRegister(7, 'q')\n",
    "in_circ = QuantumCircuit(q)\n",
    "in_circ.h(q[0])\n",
    "in_circ.cx(q[0], q[4])\n",
    "in_circ.cx(q[2], q[3])\n",
    "in_circ.cx(q[6], q[1])\n",
    "in_circ.cx(q[5], q[0])\n",
    "in_circ.rz(0.1, q[2])\n",
    "in_circ.cx(q[5], q[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we construct a pass manager that contains our new pass. We pass the example circuit above to this pass manager, and obtain a new, transformed circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.207681Z",
     "start_time": "2019-12-10T21:48:04.191604Z"
    }
   },
   "outputs": [],
   "source": [
    "from qiskit.transpiler import PassManager\n",
    "from qiskit.transpiler import CouplingMap\n",
    "from qiskit import BasicAer\n",
    "pm = PassManager()\n",
    "coupling = [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]\n",
    "coupling_map = CouplingMap(couplinglist=coupling)\n",
    "\n",
    "pm.append([BasicSwap(coupling_map)])\n",
    "\n",
    "out_circ = pm.run(in_circ)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.457320Z",
     "start_time": "2019-12-10T21:48:04.210267Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 447.797x445.48 with 1 Axes>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "in_circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.807143Z",
     "start_time": "2019-12-10T21:48:04.459740Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 869.197x445.48 with 1 Axes>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out_circ.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that this pass only inserts the swaps necessary to make every two-qubit interaction conform to the device coupling map. It does not, for example, care about the direction of interactions, or the native gate set supported by the device. This is a design philosophy of Qiskit's transpiler: every pass performs a small, well-defined action, and the aggressive circuit optimization is achieved by the pass manager through combining multiple passes."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Transpiler Logging <a name='logging'></a>\n",
    "\n",
    "Due to the complexity of the internal operations that the transpiler is performing it's likely that you'll end up in a situation where you'd like to debug an issue or just understand more of what is happening inside the transpiler when you call it. To facilitate this the transpiler emits log messages as part of its normal operation. This logging uses the Python standard library `logging` module to emit the log messages. Python's standard logging was used because it allows Qiskit-Terra's logging to integrate in a standard way with other applications and libraries.\n",
    "\n",
    "For a more thorough introduction to Python logging refer to the [official documentation](https://docs.python.org/3/library/logging.html) and the tutorials and cookbook linked off of there."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-success\">\n",
    "    <b>Note:</b> Most of the <code>logging</code> module functions used in this section adjust global settings. If you run commands in this section it might effect the output from other cells if they are run in a different order.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Configuring Python Standard Library Logging\n",
    "\n",
    "By default Python Standard Logging only prints log messages at the `WARNING`, `ERROR`, or `CRITICAL` log levels.\n",
    "Since none of the logs emitted by the transpiler use these log levels (they're all informative) you need to configure logging.\n",
    "\n",
    "The simplest way to do this is to just run:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.813322Z",
     "start_time": "2019-12-10T21:48:04.809390Z"
    }
   },
   "outputs": [],
   "source": [
    "import logging\n",
    "\n",
    "logging.basicConfig(level='DEBUG')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `basicConfig()` function (see the docs here: https://docs.python.org/3/library/logging.html#logging.basicConfig) configures a root handler and formatter. We also specify the [log level](https://docs.python.org/3/library/logging.html#levels) to display with the `level` kwarg. Setting it to a level will also include and higher levels. For example, if you set it to `'INFO'`, in addition to the `INFO` level, this will also include the `WARNING`, `ERROR`, and `CRITICAL` log levels.\n",
    "\n",
    "Now the python environment in this notebook is configured to emit log messages to stderr when you run the transpiler. For example:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-success\">\n",
    "    <b>Note:</b> <code>basicConfig()</code> will only work when called the first time it's called. It detects if a root handler and formatter have already been setup (either by using an earlier <code>basicConfig()</code> call or otherwise) and does nothing if they have. Further adjustments will have to by interacting with the handler directly.\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.870900Z",
     "start_time": "2019-12-10T21:48:04.815673Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "DEBUG:stevedore.extension:found extension EntryPoint(name='basic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='lookahead', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='none', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='sabre', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='stochastic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager', group='qiskit.transpiler.routing')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.01121 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.07796 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 1.30749 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Unroll3qOrMore - 0.02146 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: SetLayout - 0.00739 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: TrivialLayout - 0.06509 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.09203 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FullAncillaAllocation - 0.18358 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: EnlargeWithAncilla - 0.11158 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ApplyLayout - 0.24843 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.01645 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.08273 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.14734 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 2.12932 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnrollCustomDefinitions - 0.18430 (ms)\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Begin BasisTranslator from source basis {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to target basis {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Begining basis search from {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate r generated using rule \n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate u generated using rule \n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate tdg generated using rule \n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate s generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate rz generated using rule \n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate z generated using rule \n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate ry generated using rule \n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate x generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate t generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate p generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate h generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Transformation path:\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:h/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:p/1 => [Parameter(theta)]\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:t/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:x/1 => []\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:ry/1 => [Parameter(theta)]\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:z/1 => []\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:rz/1 => [Parameter(theta)]\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:s/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:tdg/1 => []\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:u/1 => [Parameter(theta), Parameter(phi), Parameter(lam)]\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:r/1 => [Parameter(theta), Parameter(phi)]\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation path search completed in 0.079s.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: h/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updating transform for mapped instr ('h', 1) h, [] from \n",
      "      ┌───┐\n",
      "q270: ┤ h ├\n",
      "      └───┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updated transform for mapped instr ('h', 1) h, [] to\n",
      "      ┌─────────┐\n",
      "q270: ┤ U2(0,π) ├\n",
      "      └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: p/1 [Parameter(theta)] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: t/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: x/1 [] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updating transform for mapped instr ('x', 1) x, [] from \n",
      "      ┌───┐\n",
      "q268: ┤ x ├\n",
      "      └───┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updated transform for mapped instr ('x', 1) x, [] to\n",
      "      ┌───────────┐\n",
      "q268: ┤ U3(π,0,π) ├\n",
      "      └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: ry/1 [Parameter(theta)] =>\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: z/1 [] =>\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: rz/1 [Parameter(theta)] =>\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: s/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: tdg/1 [] =>\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: u/1 [Parameter(theta), Parameter(phi), Parameter(lam)] =>\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: r/1 [Parameter(theta), Parameter(phi)] =>\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation paths composed in 0.045s.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation instructions replaced in 0.000s.\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: BasisTranslator - 127.81143 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckGateDirection - 0.14639 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GateDirection - 0.28825 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: RemoveResetInZeroState - 0.03529 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.06032 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.05436 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.51093 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02146 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 3.89552 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.05627 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.06032 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.07224 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01645 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.05436 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01717 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 2.38466 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.10848 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.08154 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.10681 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01884 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.08702 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02027 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.07558 (ms)\n",
      "INFO:qiskit.compiler.transpiler:Total Transpile Time - 205.91760 (ms)\n"
     ]
    }
   ],
   "source": [
    "from qiskit.providers.fake_provider import FakeTenerife\n",
    "\n",
    "\n",
    "log_circ = QuantumCircuit(2, 2)\n",
    "log_circ.h(0)\n",
    "log_circ.h(1)\n",
    "log_circ.h(1)\n",
    "log_circ.x(1)\n",
    "log_circ.cx(0, 1)\n",
    "log_circ.measure([0,1], [0,1])\n",
    "\n",
    "backend = FakeTenerife()\n",
    "\n",
    "transpile(log_circ, backend);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can clearly see here when calling `transpile()` it now prints 2 types of log messages. The first is at the `INFO` log level and come from the pass manager. These indicate each pass that was executed and how long that took. The second are at the `DEBUG` level and come from the StochasticSwap pass and describes the internal operation of that pass. It's useful for debugging issues in the pass's operation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Adjusting the log level for the transpiler\n",
    "\n",
    "The qiskit transpiler uses a single namespace ``qiskit.transpiler``, as used by ``logging.getLogger('qiskit.transpiler')``. This makes it very easy to adjust the log level for just the transpiler. For example if you only wish to see log messages at the INFO level or above you can run:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:04.917836Z",
     "start_time": "2019-12-10T21:48:04.872823Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "DEBUG:stevedore.extension:found extension EntryPoint(name='basic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='lookahead', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='none', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='sabre', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='stochastic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager', group='qiskit.transpiler.routing')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.00882 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.04649 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 3.08633 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Unroll3qOrMore - 0.03195 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: SetLayout - 0.00644 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: TrivialLayout - 0.05007 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.09489 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FullAncillaAllocation - 0.09966 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: EnlargeWithAncilla - 0.06652 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ApplyLayout - 0.28276 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.01192 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.06318 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.12589 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 1.47748 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnrollCustomDefinitions - 0.05245 (ms)\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Begin BasisTranslator from source basis {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to target basis {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation path search completed in 0.001s.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation paths composed in 0.002s.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation instructions replaced in 0.000s.\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: BasisTranslator - 7.40910 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckGateDirection - 0.07319 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GateDirection - 0.15426 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: RemoveResetInZeroState - 0.02313 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.08106 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01669 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.04125 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02027 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 4.40145 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.13161 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.08607 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.05746 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01931 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.13041 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02146 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 1.33228 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.07725 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.10133 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.10204 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02313 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.06318 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01836 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.04482 (ms)\n",
      "INFO:qiskit.compiler.transpiler:Total Transpile Time - 79.09131 (ms)\n"
     ]
    }
   ],
   "source": [
    "logging.getLogger('qiskit.transpiler').setLevel('INFO')\n",
    "transpile(log_circ, backend);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Setting up logging to deal with parallel execution\n",
    "\n",
    "When running the transpiler with multiple circuits by default these circuits are transpiled in parallel. If you want to do this with logging enabled and be able to understand the output some additional steps are required.\n",
    "\n",
    "If you were just to enable logging as above and then pass `transpile()` multiple circuits you'll get results that are difficult to decipher. For example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:05.069815Z",
     "start_time": "2019-12-10T21:48:04.920183Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "DEBUG:stevedore.extension:found extension EntryPoint(name='basic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='basic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='lookahead', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='lookahead', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='none', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='none', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='sabre', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='sabre', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='stochastic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager', group='qiskit.transpiler.routing')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='stochastic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager', group='qiskit.transpiler.routing')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.11110 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.27680 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.14544 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.21100 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 3.80325 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 3.51930 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Unroll3qOrMore - 0.07844 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Unroll3qOrMore - 0.07057 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: SetLayout - 0.02217 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: SetLayout - 0.00978 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: TrivialLayout - 0.27537 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: TrivialLayout - 0.20695 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.25034 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.25201 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FullAncillaAllocation - 0.17428 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: EnlargeWithAncilla - 0.14925 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FullAncillaAllocation - 0.25582 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: EnlargeWithAncilla - 0.23961 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ApplyLayout - 0.50950 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.08559 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ApplyLayout - 1.11890 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.11158 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.01860 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckMap - 0.09012 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.16379 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnitarySynthesis - 0.11730 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 3.08251 (ms)\n",
      "DEBUG:stevedore.extension:found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnrollCustomDefinitions - 0.16665 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: HighLevelSynthesis - 2.89869 (ms)\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Begin BasisTranslator from source basis {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to target basis {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: UnrollCustomDefinitions - 0.64802 (ms)\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Begining basis search from {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Begin BasisTranslator from source basis {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to target basis {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Begining basis search from {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate r generated using rule \n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate r generated using rule \n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate u generated using rule \n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate u generated using rule \n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate tdg generated using rule \n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate s generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate tdg generated using rule \n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate s generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate rz generated using rule \n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate z generated using rule \n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate rz generated using rule \n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate ry generated using rule \n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate z generated using rule \n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate x generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate ry generated using rule \n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate x generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate t generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate p generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate t generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate h generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate p generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Transformation path:\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Gate h generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Transformation path:\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:h/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:h/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:p/1 => [Parameter(theta)]\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:t/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:p/1 => [Parameter(theta)]\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:t/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:x/1 => []\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:ry/1 => [Parameter(theta)]\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:x/1 => []\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:z/1 => []\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:ry/1 => [Parameter(theta)]\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:z/1 => []\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:rz/1 => [Parameter(theta)]\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:s/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:rz/1 => [Parameter(theta)]\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:tdg/1 => []\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:s/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:u/1 => [Parameter(theta), Parameter(phi), Parameter(lam)]\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:tdg/1 => []\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:u/1 => [Parameter(theta), Parameter(phi), Parameter(lam)]\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:r/1 => [Parameter(theta), Parameter(phi)]\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation path search completed in 0.096s.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:r/1 => [Parameter(theta), Parameter(phi)]\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation path search completed in 0.092s.\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: h/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: h/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updating transform for mapped instr ('h', 1) h, [] from \n",
      "      ┌───┐\n",
      "q284: ┤ h ├\n",
      "      └───┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updating transform for mapped instr ('h', 1) h, [] from \n",
      "      ┌───┐\n",
      "q284: ┤ h ├\n",
      "      └───┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updated transform for mapped instr ('h', 1) h, [] to\n",
      "      ┌─────────┐\n",
      "q284: ┤ U2(0,π) ├\n",
      "      └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: p/1 [Parameter(theta)] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updated transform for mapped instr ('h', 1) h, [] to\n",
      "      ┌─────────┐\n",
      "q284: ┤ U2(0,π) ├\n",
      "      └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: t/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: p/1 [Parameter(theta)] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: t/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: x/1 [] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: x/1 [] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updating transform for mapped instr ('x', 1) x, [] from \n",
      "      ┌───┐\n",
      "q282: ┤ x ├\n",
      "      └───┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updating transform for mapped instr ('x', 1) x, [] from \n",
      "      ┌───┐\n",
      "q282: ┤ x ├\n",
      "      └───┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updated transform for mapped instr ('x', 1) x, [] to\n",
      "      ┌───────────┐\n",
      "q282: ┤ U3(π,0,π) ├\n",
      "      └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Updated transform for mapped instr ('x', 1) x, [] to\n",
      "      ┌───────────┐\n",
      "q282: ┤ U3(π,0,π) ├\n",
      "      └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: ry/1 [Parameter(theta)] =>\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: ry/1 [Parameter(theta)] =>\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: z/1 [] =>\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: z/1 [] =>\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: rz/1 [Parameter(theta)] =>\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: rz/1 [Parameter(theta)] =>\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: s/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: s/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: tdg/1 [] =>\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: tdg/1 [] =>\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: u/1 [Parameter(theta), Parameter(phi), Parameter(lam)] =>\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: u/1 [Parameter(theta), Parameter(phi), Parameter(lam)] =>\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: r/1 [Parameter(theta), Parameter(phi)] =>\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "DEBUG:qiskit.transpiler.passes.basis.basis_translator:Composing transform step: r/1 [Parameter(theta), Parameter(phi)] =>\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation paths composed in 0.054s.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation paths composed in 0.059s.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation instructions replaced in 0.000s.\n",
      "INFO:qiskit.transpiler.passes.basis.basis_translator:Basis translation instructions replaced in 0.000s.\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: BasisTranslator - 157.53222 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: BasisTranslator - 164.86216 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckGateDirection - 0.11420 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CheckGateDirection - 0.15402 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GateDirection - 0.24891 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GateDirection - 0.38290 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: RemoveResetInZeroState - 0.12541 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: RemoveResetInZeroState - 0.08464 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.13971 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.09847 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.04601 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.03552 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.10777 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.07534 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.03409 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02384 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 5.46145 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.15616 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.17238 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.06294 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 6.20103 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02456 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.20838 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.05889 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.08988 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02050 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.09155 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 1.33586 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02384 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.11396 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.06008 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01812 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.07248 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.12565 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Optimize1qGatesDecomposition - 1.33085 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.01884 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: CXCancellation - 0.10204 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.06866 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: GatesInBasis - 0.05865 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02265 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Depth - 0.11039 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.06700 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.02861 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: Size - 0.07248 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: FixedPoint - 0.05746 (ms)\n",
      "INFO:qiskit.transpiler.runningpassmanager:Pass: ContainsInstruction - 0.06485 (ms)\n",
      "INFO:qiskit.compiler.transpiler:Total Transpile Time - 401.94011 (ms)\n"
     ]
    }
   ],
   "source": [
    "# Change log level back to DEBUG\n",
    "logging.getLogger('qiskit.transpiler').setLevel('DEBUG')\n",
    "# Transpile multiple circuits\n",
    "circuits = [log_circ, log_circ]\n",
    "transpile(circuits, backend);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see here we get log messages from both circuits being transpiled together. There is no way to know which pass is part of which circuit's transpilation.  Luckily Python logging provides tools to deal with this. The simplest one is to just change the [log formatter](https://docs.python.org/3/library/logging.html#logging.Formatter) so that includes additional information so we can associate a log message with the process it came from."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:05.077804Z",
     "start_time": "2019-12-10T21:48:05.073526Z"
    }
   },
   "outputs": [],
   "source": [
    "formatter = logging.Formatter('%(name)s - %(processName)-10s - %(levelname)s: %(message)s')\n",
    "handler = logging.getLogger().handlers[0]\n",
    "handler.setFormatter(formatter)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then rerun the `transpile()` call and see the new log formatter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:05.205597Z",
     "start_time": "2019-12-10T21:48:05.081153Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='basic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='basic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='lookahead', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='lookahead', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='none', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='none', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='sabre', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='sabre', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='stochastic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager', group='qiskit.transpiler.routing')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='stochastic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager', group='qiskit.transpiler.routing')\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: ContainsInstruction - 0.03219 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: ContainsInstruction - 0.03409 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: UnitarySynthesis - 0.22340 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: UnitarySynthesis - 0.22054 (ms)\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: HighLevelSynthesis - 4.45032 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: HighLevelSynthesis - 3.88885 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Unroll3qOrMore - 0.06819 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Unroll3qOrMore - 0.09251 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: SetLayout - 0.02050 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: SetLayout - 0.03481 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: TrivialLayout - 0.19765 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: TrivialLayout - 0.20719 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: CheckMap - 0.23437 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: CheckMap - 0.21529 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: FullAncillaAllocation - 0.22936 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: FullAncillaAllocation - 0.19598 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: EnlargeWithAncilla - 0.20957 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: EnlargeWithAncilla - 0.20599 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: ApplyLayout - 1.73903 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: ApplyLayout - 1.93524 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: ContainsInstruction - 0.16189 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: ContainsInstruction - 0.08154 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: CheckMap - 0.11396 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: CheckMap - 0.10371 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: UnitarySynthesis - 0.12875 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: UnitarySynthesis - 0.09084 (ms)\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis')\n",
      "stevedore.extension - ForkProcess-7 - DEBUG: found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "stevedore.extension - ForkProcess-8 - DEBUG: found extension EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis')\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: HighLevelSynthesis - 7.49135 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: HighLevelSynthesis - 10.27989 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: UnrollCustomDefinitions - 0.27299 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: UnrollCustomDefinitions - 0.24176 (ms)\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - INFO: Begin BasisTranslator from source basis {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to target basis {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - INFO: Begin BasisTranslator from source basis {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to target basis {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Begining basis search from {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Begining basis search from {('cx', 2), ('x', 1), ('measure', 1), ('h', 1)} to {'snapshot', 'u1', 'u3', 'u2', 'measure', 'reset', 'id', 'barrier', 'cx', 'delay'}.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate r generated using rule \n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate r generated using rule \n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate u generated using rule \n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate u generated using rule \n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate tdg generated using rule \n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate tdg generated using rule \n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate s generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate s generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate rz generated using rule \n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate rz generated using rule \n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate z generated using rule \n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate z generated using rule \n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate ry generated using rule \n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate ry generated using rule \n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate x generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate x generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate t generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate t generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate p generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Gate h generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate p generated using rule \n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Transformation path:\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Gate h generated using rule \n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      " with total cost of 1.0.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: h/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Transformation path:\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: h/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: p/1 => [Parameter(theta)]\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: p/1 => [Parameter(theta)]\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: t/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: t/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: x/1 => []\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: x/1 => []\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: ry/1 => [Parameter(theta)]\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: ry/1 => [Parameter(theta)]\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: z/1 => []\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: z/1 => []\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: rz/1 => [Parameter(theta)]\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: s/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: rz/1 => [Parameter(theta)]\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: tdg/1 => []\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: s/1 => []\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: tdg/1 => []\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: u/1 => [Parameter(theta), Parameter(phi), Parameter(lam)]\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: u/1 => [Parameter(theta), Parameter(phi), Parameter(lam)]\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: r/1 => [Parameter(theta), Parameter(phi)]\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: r/1 => [Parameter(theta), Parameter(phi)]\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - INFO: Basis translation path search completed in 0.089s.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - INFO: Basis translation path search completed in 0.092s.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: h/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: h/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U2(0,π) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Updating transform for mapped instr ('h', 1) h, [] from \n",
      "      ┌───┐\n",
      "q284: ┤ h ├\n",
      "      └───┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Updating transform for mapped instr ('h', 1) h, [] from \n",
      "      ┌───┐\n",
      "q284: ┤ h ├\n",
      "      └───┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Updated transform for mapped instr ('h', 1) h, [] to\n",
      "      ┌─────────┐\n",
      "q284: ┤ U2(0,π) ├\n",
      "      └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Updated transform for mapped instr ('h', 1) h, [] to\n",
      "      ┌─────────┐\n",
      "q284: ┤ U2(0,π) ├\n",
      "      └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: p/1 [Parameter(theta)] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: p/1 [Parameter(theta)] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: t/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: t/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/4) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: x/1 [] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Updating transform for mapped instr ('x', 1) x, [] from \n",
      "      ┌───┐\n",
      "q282: ┤ x ├\n",
      "      └───┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: x/1 [] =>\n",
      "   ┌───────────┐\n",
      "q: ┤ U3(π,0,π) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Updating transform for mapped instr ('x', 1) x, [] from \n",
      "      ┌───┐\n",
      "q282: ┤ x ├\n",
      "      └───┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Updated transform for mapped instr ('x', 1) x, [] to\n",
      "      ┌───────────┐\n",
      "q282: ┤ U3(π,0,π) ├\n",
      "      └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: ry/1 [Parameter(theta)] =>\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Updated transform for mapped instr ('x', 1) x, [] to\n",
      "      ┌───────────┐\n",
      "q282: ┤ U3(π,0,π) ├\n",
      "      └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: z/1 [] =>\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: ry/1 [Parameter(theta)] =>\n",
      "   ┌──────────────┐\n",
      "q: ┤ R(theta,π/2) ├\n",
      "   └──────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: z/1 [] =>\n",
      "   ┌───────┐\n",
      "q: ┤ U1(π) ├\n",
      "   └───────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: rz/1 [Parameter(theta)] =>\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: rz/1 [Parameter(theta)] =>\n",
      "global phase: -0.5*theta\n",
      "   ┌───────────┐\n",
      "q: ┤ U1(theta) ├\n",
      "   └───────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: s/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: s/1 [] =>\n",
      "   ┌─────────┐\n",
      "q: ┤ U1(π/2) ├\n",
      "   └─────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: tdg/1 [] =>\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: tdg/1 [] =>\n",
      "   ┌──────────┐\n",
      "q: ┤ U1(-π/4) ├\n",
      "   └──────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: u/1 [Parameter(theta), Parameter(phi), Parameter(lam)] =>\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: u/1 [Parameter(theta), Parameter(phi), Parameter(lam)] =>\n",
      "   ┌───────────────────┐\n",
      "q: ┤ U3(theta,phi,lam) ├\n",
      "   └───────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - DEBUG: Composing transform step: r/1 [Parameter(theta), Parameter(phi)] =>\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - DEBUG: Composing transform step: r/1 [Parameter(theta), Parameter(phi)] =>\n",
      "   ┌───────────────────────────────────┐\n",
      "q: ┤ U3(theta,phi - π/2,π/2 - 1.0*phi) ├\n",
      "   └───────────────────────────────────┘\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - INFO: Basis translation paths composed in 0.047s.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - INFO: Basis translation paths composed in 0.045s.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-8 - INFO: Basis translation instructions replaced in 0.000s.\n",
      "qiskit.transpiler.passes.basis.basis_translator - ForkProcess-7 - INFO: Basis translation instructions replaced in 0.000s.\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: BasisTranslator - 142.57407 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: BasisTranslator - 144.40155 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: CheckGateDirection - 0.15712 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: CheckGateDirection - 0.17142 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: GateDirection - 0.28253 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: RemoveResetInZeroState - 0.07534 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: GateDirection - 0.24128 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Depth - 0.14544 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: RemoveResetInZeroState - 0.08249 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: FixedPoint - 0.04268 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Depth - 0.16069 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Size - 0.14091 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: FixedPoint - 0.03624 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: FixedPoint - 0.01359 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Size - 0.10967 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: FixedPoint - 0.02694 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Optimize1qGatesDecomposition - 4.01998 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: CXCancellation - 0.13161 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Optimize1qGatesDecomposition - 3.88145 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: GatesInBasis - 0.12183 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: CXCancellation - 0.20623 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Depth - 0.06962 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: GatesInBasis - 0.06723 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: FixedPoint - 0.02122 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Size - 0.04506 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: FixedPoint - 0.03147 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Depth - 0.11611 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: FixedPoint - 0.01955 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Optimize1qGatesDecomposition - 1.07360 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Size - 0.06151 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: CXCancellation - 0.10633 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: FixedPoint - 0.02623 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: GatesInBasis - 0.07534 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Optimize1qGatesDecomposition - 1.08242 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Depth - 0.07391 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: FixedPoint - 0.02074 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: Size - 0.05603 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: FixedPoint - 0.02646 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-8 - INFO: Pass: ContainsInstruction - 0.05937 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: CXCancellation - 0.08416 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: GatesInBasis - 0.05841 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Depth - 0.06700 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: FixedPoint - 0.02432 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: Size - 0.04792 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: FixedPoint - 0.02933 (ms)\n",
      "qiskit.transpiler.runningpassmanager - ForkProcess-7 - INFO: Pass: ContainsInstruction - 0.06461 (ms)\n",
      "qiskit.compiler.transpiler - MainProcess - INFO: Total Transpile Time - 393.94832 (ms)\n"
     ]
    }
   ],
   "source": [
    "transpile(circuits, backend);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now the format for the log messages has been changed and it includes a process name for each of the transpilation processes so it's at least clear which log messages go together.\n",
    "\n",
    "There are many different options for how you can configure, this example is pretty limited. Refer to the documentation for more examples and options to build more sophisticated use cases that suit your specific use case or preferences."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T21:48:10.920429Z",
     "start_time": "2019-12-10T21:48:10.912305Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td><code>qiskit-terra</code></td><td>0.22.3</td></tr><tr><td><code>qiskit-aer</code></td><td>0.11.2</td></tr><tr><td><code>qiskit-ignis</code></td><td>0.7.0</td></tr><tr><td><code>qiskit-ibmq-provider</code></td><td>0.19.2</td></tr><tr><td><code>qiskit</code></td><td>0.39.4</td></tr><tr><th>System information</th></tr><tr><td>Python version</td><td>3.10.6</td></tr><tr><td>Python compiler</td><td>GCC 11.3.0</td></tr><tr><td>Python build</td><td>main, Nov 14 2022 16:10:14</td></tr><tr><td>OS</td><td>Linux</td></tr><tr><td>CPUs</td><td>4</td></tr><tr><td>Memory (Gb)</td><td>3.7695083618164062</td></tr><tr><td colspan='2'>Thu Dec 22 18:19:13 2022 JST</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2022.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  },
  "vscode": {
   "interpreter": {
    "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
